Bug 1512655 part 2 - Assert Cu.setWantXrays is never called on system-principal scopes. r=kmag

Differential Revision: https://phabricator.services.mozilla.com/D14695

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Jan de Mooij 2018-12-17 20:38:59 +00:00
parent 111454f4a4
commit a2a91d4831
2 changed files with 4 additions and 3 deletions

View File

@ -458,6 +458,8 @@ interface nsIXPCComponents_Utils : nsISupports
*
* Enables Xray vision for same-compartment access for the compartment
* indicated by |vscope|. All outgoing wrappers are recomputed.
*
* This must not be called on chrome (system-principal) scopes.
*/
[implicit_jscontext]
void setWantXrays(in jsval vscope);

View File

@ -1978,9 +1978,8 @@ nsXPCComponents_Utils::SetWantXrays(HandleValue vscope, JSContext* cx) {
return NS_ERROR_INVALID_ARG;
}
JSObject* scopeObj = js::UncheckedUnwrap(&vscope.toObject());
MOZ_DIAGNOSTIC_ASSERT(
!mozJSComponentLoader::Get()->IsLoaderGlobal(scopeObj),
"Don't call Cu.setWantXrays() in a JSM that shares its global");
MOZ_RELEASE_ASSERT(!AccessCheck::isChrome(scopeObj),
"Don't call setWantXrays on system-principal scopes");
JS::Compartment* compartment = js::GetObjectCompartment(scopeObj);
CompartmentPrivate::Get(scopeObj)->wantXrays = true;
bool ok = js::RecomputeWrappers(cx, js::SingleCompartment(compartment),