mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1018583 part 2. Remove the returnStringOnly gunk from sandboxes. r=bholley
This commit is contained in:
parent
98d7fb77a1
commit
53c7044efa
@ -112,8 +112,8 @@ nsresult EvaluateAdminConfigScript(const char *js_buffer, size_t length,
|
||||
|
||||
nsAutoCString script(js_buffer, length);
|
||||
JS::RootedValue v(cx);
|
||||
rv = xpc->EvalInSandboxObject(NS_ConvertASCIItoUTF16(script), filename, cx, autoconfigSb.ref(),
|
||||
/* returnStringOnly = */ false, &v);
|
||||
rv = xpc->EvalInSandboxObject(NS_ConvertASCIItoUTF16(script), filename, cx,
|
||||
autoconfigSb.ref(), &v);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return NS_OK;
|
||||
|
@ -274,7 +274,7 @@ interface nsIXPCFunctionThisTranslator : nsISupports
|
||||
{ 0xbd, 0xd6, 0x0, 0x0, 0x64, 0x65, 0x73, 0x74 } }
|
||||
%}
|
||||
|
||||
[noscript, uuid(febddcc9-5a88-4121-815a-934cd159b3e9)]
|
||||
[noscript, uuid(9ec7367c-0dde-4b7a-963c-5a590ee3ee42)]
|
||||
interface nsIXPConnect : nsISupports
|
||||
{
|
||||
%{ C++
|
||||
@ -511,10 +511,6 @@ interface nsIXPConnect : nsISupports
|
||||
* the script. The actual evaluation will happen on a new
|
||||
* temporary context.
|
||||
* @param sandbox The sandbox object to evaluate the script in.
|
||||
* @param returnStringOnly The only results to come out of the
|
||||
* computation (including exceptions) will
|
||||
* be coerced into strings created in the
|
||||
* sandbox.
|
||||
* @return The result of the evaluation as a jsval. If the caller
|
||||
* intends to use the return value from this call the caller
|
||||
* is responsible for rooting the jsval before making a call
|
||||
@ -522,8 +518,7 @@ interface nsIXPConnect : nsISupports
|
||||
*/
|
||||
[noscript] jsval evalInSandboxObject(in AString source, in string filename,
|
||||
in JSContextPtr cx,
|
||||
in JSObjectPtr sandbox,
|
||||
in boolean returnStringOnly);
|
||||
in JSObjectPtr sandbox);
|
||||
|
||||
/**
|
||||
* Whether or not XPConnect should report all JS exceptions when returning
|
||||
|
@ -1505,7 +1505,7 @@ ContextHolder::~ContextHolder()
|
||||
nsresult
|
||||
xpc::EvalInSandbox(JSContext *cx, HandleObject sandboxArg, const nsAString& source,
|
||||
const nsACString& filename, int32_t lineNo,
|
||||
JSVersion jsVersion, bool returnStringOnly, MutableHandleValue rval)
|
||||
JSVersion jsVersion, MutableHandleValue rval)
|
||||
{
|
||||
JS_AbortIfWrongThread(JS_GetRuntime(cx));
|
||||
rval.set(UndefinedValue());
|
||||
@ -1556,22 +1556,11 @@ xpc::EvalInSandbox(JSContext *cx, HandleObject sandboxArg, const nsAString& sour
|
||||
JS::RootedObject rootedSandbox(sandcx, sandbox);
|
||||
ok = JS::Evaluate(sandcx, rootedSandbox, options,
|
||||
PromiseFlatString(source).get(), source.Length(), &v);
|
||||
if (ok && returnStringOnly && !v.isUndefined()) {
|
||||
JSString *str = ToString(sandcx, v);
|
||||
ok = !!str;
|
||||
v = ok ? JS::StringValue(str) : JS::UndefinedValue();
|
||||
}
|
||||
|
||||
// If the sandbox threw an exception, grab it off the context.
|
||||
if (JS_GetPendingException(sandcx, &exn)) {
|
||||
MOZ_ASSERT(!ok);
|
||||
JS_ClearPendingException(sandcx);
|
||||
if (returnStringOnly) {
|
||||
// The caller asked for strings only, convert the
|
||||
// exception into a string.
|
||||
JSString *str = ToString(sandcx, exn);
|
||||
exn = str ? JS::StringValue(str) : JS::UndefinedValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2679,7 +2679,7 @@ nsXPCComponents_Utils::EvalInSandbox(const nsAString& source,
|
||||
}
|
||||
|
||||
return xpc::EvalInSandbox(cx, sandbox, source, filename, lineNo,
|
||||
jsVersion, false, retval);
|
||||
jsVersion, retval);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -789,7 +789,7 @@ nsXPConnect::CreateSandbox(JSContext *cx, nsIPrincipal *principal,
|
||||
NS_IMETHODIMP
|
||||
nsXPConnect::EvalInSandboxObject(const nsAString& source, const char *filename,
|
||||
JSContext *cx, JSObject *sandboxArg,
|
||||
bool returnStringOnly, MutableHandleValue rval)
|
||||
MutableHandleValue rval)
|
||||
{
|
||||
if (!sandboxArg)
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
@ -802,7 +802,7 @@ nsXPConnect::EvalInSandboxObject(const nsAString& source, const char *filename,
|
||||
filenameStr = NS_LITERAL_CSTRING("x-bogus://XPConnect/Sandbox");
|
||||
}
|
||||
return EvalInSandbox(cx, sandbox, source, filenameStr, 1,
|
||||
JSVERSION_DEFAULT, returnStringOnly, rval);
|
||||
JSVERSION_DEFAULT, rval);
|
||||
}
|
||||
|
||||
/* nsIXPConnectJSObjectHolder getWrappedNativePrototype (in JSContextPtr aJSContext, in JSObjectPtr aScope, in nsIClassInfo aClassInfo); */
|
||||
|
@ -3506,16 +3506,11 @@ CreateSandboxObject(JSContext *cx, JS::MutableHandleValue vp, nsISupports *prinO
|
||||
// that *rval doesn't get collected during the call or usage after the
|
||||
// call. This helper will use filename and lineNo for error reporting,
|
||||
// and if no filename is provided it will use the codebase from the
|
||||
// principal and line number 1 as a fallback. if returnStringOnly is
|
||||
// true, then the result in *rval, or the exception in cx->exception
|
||||
// will be coerced into strings. If an exception is thrown converting
|
||||
// an exception to a string, evalInSandbox will return an NS_ERROR_*
|
||||
// result, and cx->exception will be empty.
|
||||
// principal and line number 1 as a fallback.
|
||||
nsresult
|
||||
EvalInSandbox(JSContext *cx, JS::HandleObject sandbox, const nsAString& source,
|
||||
const nsACString& filename, int32_t lineNo,
|
||||
JSVersion jsVersion, bool returnStringOnly,
|
||||
JS::MutableHandleValue rval);
|
||||
JSVersion jsVersion, JS::MutableHandleValue rval);
|
||||
|
||||
nsresult
|
||||
GetSandboxAddonId(JSContext *cx, JS::HandleObject sandboxArg,
|
||||
|
Loading…
Reference in New Issue
Block a user