diff options
author | Jonathan Reams <jbreams@mongodb.com> | 2017-09-06 17:01:26 -0400 |
---|---|---|
committer | Jonathan Reams <jbreams@mongodb.com> | 2017-09-08 16:42:21 -0400 |
commit | 8c0fd02d2dc44e3addca3e4ea9dd7292ea8b3e6f (patch) | |
tree | 7b2f68160ffc5895d257bfb79b84aed5da5be554 | |
parent | e45f7ecf6b656327a909b836674987b2052ffa76 (diff) | |
download | mongo-8c0fd02d2dc44e3addca3e4ea9dd7292ea8b3e6f.tar.gz |
SERVER-30943 Check return value of JS_Enumerate in ObjectWrapper/ValueWriter
-rw-r--r-- | src/mongo/scripting/mozjs/objectwrapper.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/mongo/scripting/mozjs/objectwrapper.cpp b/src/mongo/scripting/mozjs/objectwrapper.cpp index 77ea9a1eca8..8781f792484 100644 --- a/src/mongo/scripting/mozjs/objectwrapper.cpp +++ b/src/mongo/scripting/mozjs/objectwrapper.cpp @@ -564,7 +564,12 @@ ObjectWrapper::WriteFieldRecursionFrame::WriteFieldRecursionFrame(JSContext* cx, ids.infallibleAppend(rid); } } else { - JS::AutoIdArray rids(cx, JS_Enumerate(cx, thisv)); + auto ridArrayPtr = JS_Enumerate(cx, thisv); + if (!ridArrayPtr) { + throwCurrentJSException( + cx, ErrorCodes::JSInterpreterFailure, "Failure to enumerate object"); + } + JS::AutoIdArray rids(cx, ridArrayPtr); if (!ids.reserve(rids.length())) { throwCurrentJSException( |