diff --git a/dom/base/nsFrameMessageManager.cpp b/dom/base/nsFrameMessageManager.cpp index 35c072fb7cc..eac1f9c76ea 100644 --- a/dom/base/nsFrameMessageManager.cpp +++ b/dom/base/nsFrameMessageManager.cpp @@ -1018,23 +1018,31 @@ nsFrameMessageManager::ReceiveMessage(nsISupports* aTarget, aMessage.Length())); NS_ENSURE_TRUE(jsMessage, NS_ERROR_OUT_OF_MEMORY); JS::Rooted syncv(cx, JS::BooleanValue(aIsSync)); - JS_DefineProperty(cx, param, "target", targetv, JSPROP_ENUMERATE); - JS_DefineProperty(cx, param, "name", jsMessage, JSPROP_ENUMERATE); - JS_DefineProperty(cx, param, "sync", syncv, JSPROP_ENUMERATE); - JS_DefineProperty(cx, param, "json", json, JSPROP_ENUMERATE); // deprecated - JS_DefineProperty(cx, param, "data", json, JSPROP_ENUMERATE); - JS_DefineProperty(cx, param, "objects", cpowsv, JSPROP_ENUMERATE); + bool ok = JS_DefineProperty(cx, param, "target", targetv, JSPROP_ENUMERATE) && + JS_DefineProperty(cx, param, "name", jsMessage, JSPROP_ENUMERATE) && + JS_DefineProperty(cx, param, "sync", syncv, JSPROP_ENUMERATE) && + JS_DefineProperty(cx, param, "json", json, JSPROP_ENUMERATE) && // deprecated + JS_DefineProperty(cx, param, "data", json, JSPROP_ENUMERATE) && + JS_DefineProperty(cx, param, "objects", cpowsv, JSPROP_ENUMERATE); + NS_ENSURE_TRUE(ok, NS_ERROR_UNEXPECTED); // message.principal == null if (!aPrincipal) { - JS_DefineProperty(cx, param, "principal", JS::UndefinedHandleValue, JSPROP_ENUMERATE); + bool ok = JS_DefineProperty(cx, param, "principal", + JS::UndefinedHandleValue, JSPROP_ENUMERATE); + NS_ENSURE_TRUE(ok, NS_ERROR_UNEXPECTED); } // message.principal = the principal else { JS::Rooted principalValue(cx); - rv = nsContentUtils::WrapNative(cx, aPrincipal, &NS_GET_IID(nsIPrincipal), &principalValue); - JS_DefineProperty(cx, param, "principal", principalValue, JSPROP_ENUMERATE); + nsresult rv = nsContentUtils::WrapNative(cx, aPrincipal, + &NS_GET_IID(nsIPrincipal), + &principalValue); + NS_ENSURE_SUCCESS(rv, rv); + bool ok = JS_DefineProperty(cx, param, "principal", principalValue, + JSPROP_ENUMERATE); + NS_ENSURE_TRUE(ok, NS_ERROR_UNEXPECTED); } JS::Rooted thisValue(cx, JS::UndefinedValue()); @@ -1058,8 +1066,9 @@ nsFrameMessageManager::ReceiveMessage(nsISupports* aTarget, } else { // If the listener is a JS object which has receiveMessage function: if (!JS_GetProperty(cx, object, "receiveMessage", &funval) || - !funval.isObject()) + !funval.isObject()) { return NS_ERROR_UNEXPECTED; + } // Check if the object is even callable. NS_ENSURE_STATE(JS::IsCallable(&funval.toObject()));