зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1582512 - Disable script filename restrictions in Marionette r=jandem,marionette-reviewers,whimboo
Differential Revision: https://phabricator.services.mozilla.com/D51676 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
2244f8d5c6
Коммит
3a72c5e713
|
@ -136,7 +136,8 @@ interface nsIXPCComponents_Utils : nsISupports
|
|||
jsval evalInSandbox(in AString source, in jsval sandbox,
|
||||
[optional] in jsval version,
|
||||
[optional] in AUTF8String filename,
|
||||
[optional] in long lineNo);
|
||||
[optional] in long lineNo,
|
||||
[optional] in bool enforceFilenameRestrictions);
|
||||
|
||||
/*
|
||||
* Get the sandbox for running JS-implemented UA widgets (video controls etc.),
|
||||
|
|
|
@ -1881,7 +1881,8 @@ nsresult nsXPCComponents_utils_Sandbox::CallOrConstruct(
|
|||
|
||||
nsresult xpc::EvalInSandbox(JSContext* cx, HandleObject sandboxArg,
|
||||
const nsAString& source, const nsACString& filename,
|
||||
int32_t lineNo, MutableHandleValue rval) {
|
||||
int32_t lineNo, bool enforceFilenameRestrictions,
|
||||
MutableHandleValue rval) {
|
||||
JS_AbortIfWrongThread(cx);
|
||||
rval.set(UndefinedValue());
|
||||
|
||||
|
@ -1923,6 +1924,7 @@ nsresult xpc::EvalInSandbox(JSContext* cx, HandleObject sandboxArg,
|
|||
|
||||
JS::CompileOptions options(sandcx);
|
||||
options.setFileAndLine(filenameBuf.get(), lineNo);
|
||||
options.setSkipFilenameValidation(!enforceFilenameRestrictions);
|
||||
MOZ_ASSERT(JS_IsGlobalObject(sandbox));
|
||||
|
||||
const nsPromiseFlatString& flat = PromiseFlatString(source);
|
||||
|
|
|
@ -1448,8 +1448,9 @@ nsXPCComponents_Utils::ReportError(HandleValue error, HandleValue stack,
|
|||
NS_IMETHODIMP
|
||||
nsXPCComponents_Utils::EvalInSandbox(
|
||||
const nsAString& source, HandleValue sandboxVal, HandleValue version,
|
||||
const nsACString& filenameArg, int32_t lineNumber, JSContext* cx,
|
||||
uint8_t optionalArgc, MutableHandleValue retval) {
|
||||
const nsACString& filenameArg, int32_t lineNumber,
|
||||
bool enforceFilenameRestrictions, JSContext* cx, uint8_t optionalArgc,
|
||||
MutableHandleValue retval) {
|
||||
RootedObject sandbox(cx);
|
||||
if (!JS_ValueToObject(cx, sandboxVal, &sandbox) || !sandbox) {
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
|
@ -1472,8 +1473,11 @@ nsXPCComponents_Utils::EvalInSandbox(
|
|||
lineNo = frame->GetLineNumber(cx);
|
||||
}
|
||||
}
|
||||
enforceFilenameRestrictions =
|
||||
(optionalArgc >= 4) ? enforceFilenameRestrictions : true;
|
||||
|
||||
return xpc::EvalInSandbox(cx, sandbox, source, filename, lineNo, retval);
|
||||
return xpc::EvalInSandbox(cx, sandbox, source, filename, lineNo,
|
||||
enforceFilenameRestrictions, retval);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
|
|
@ -777,7 +777,8 @@ nsXPConnect::EvalInSandboxObject(const nsAString& source, const char* filename,
|
|||
} else {
|
||||
filenameStr = NS_LITERAL_CSTRING("x-bogus://XPConnect/Sandbox");
|
||||
}
|
||||
return EvalInSandbox(cx, sandbox, source, filenameStr, 1, rval);
|
||||
return EvalInSandbox(cx, sandbox, source, filenameStr, 1,
|
||||
/* enforceFilenameRestrictions */ true, rval);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
|
|
@ -2502,7 +2502,8 @@ nsresult CreateSandboxObject(JSContext* cx, JS::MutableHandleValue vp,
|
|||
// principal and line number 1 as a fallback.
|
||||
nsresult EvalInSandbox(JSContext* cx, JS::HandleObject sandbox,
|
||||
const nsAString& source, const nsACString& filename,
|
||||
int32_t lineNo, JS::MutableHandleValue rval);
|
||||
int32_t lineNo, bool enforceFilenameRestrictions,
|
||||
JS::MutableHandleValue rval);
|
||||
|
||||
// Helper for retrieving metadata stored in a reserved slot. The metadata
|
||||
// is set during the sandbox creation using the "metadata" option.
|
||||
|
|
|
@ -135,7 +135,14 @@ evaluate.sandbox = function(
|
|||
marionetteSandbox.window.addEventListener("unload", unloadHandler);
|
||||
|
||||
let promises = [
|
||||
Cu.evalInSandbox(src, sb, "1.8", file, line),
|
||||
Cu.evalInSandbox(
|
||||
src,
|
||||
sb,
|
||||
"1.8",
|
||||
file,
|
||||
line,
|
||||
/* enforceFilenameRestrictions */ false
|
||||
),
|
||||
timeoutPromise,
|
||||
];
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче