diff --git a/js/src/xpconnect/src/XPCCrossOriginWrapper.cpp b/js/src/xpconnect/src/XPCCrossOriginWrapper.cpp index 94d8906e8c37..e57999dd35b7 100644 --- a/js/src/xpconnect/src/XPCCrossOriginWrapper.cpp +++ b/js/src/xpconnect/src/XPCCrossOriginWrapper.cpp @@ -608,11 +608,6 @@ XPC_XOW_AddProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return ThrowException(NS_ERROR_ILLEGAL_VALUE, cx); } - XPCCallContext ccx(JS_CALLER, cx); - if (!ccx.IsValid()) { - return ThrowException(NS_ERROR_FAILURE, cx); - } - JSBool privilegeEnabled = JS_FALSE; nsresult rv = CanAccessWrapper(cx, obj, wrappedObj, &privilegeEnabled); if (NS_FAILED(rv)) { @@ -635,11 +630,6 @@ XPC_XOW_DelProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) return ThrowException(NS_ERROR_ILLEGAL_VALUE, cx); } - XPCCallContext ccx(JS_CALLER, cx); - if (!ccx.IsValid()) { - return ThrowException(NS_ERROR_FAILURE, cx); - } - nsresult rv = CanAccessWrapper(cx, obj, wrappedObj, nsnull); if (NS_FAILED(rv)) { if (rv == NS_ERROR_DOM_PROP_ACCESS_DENIED) { @@ -678,12 +668,7 @@ XPC_XOW_GetOrSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp, return ThrowException(NS_ERROR_ILLEGAL_VALUE, cx); } - XPCCallContext ccx(JS_CALLER, cx); - if (!ccx.IsValid()) { - return ThrowException(NS_ERROR_FAILURE, cx); - } - - AUTO_MARK_JSVAL(ccx, vp); + js::AutoArrayRooter rooter(cx, 1, vp); JSObject *wrappedObj = GetWrappedObject(cx, obj); if (!wrappedObj) { @@ -697,6 +682,11 @@ XPC_XOW_GetOrSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp, return JS_FALSE; } + XPCCallContext ccx(JS_CALLER, cx); + if (!ccx.IsValid()) { + return ThrowException(NS_ERROR_FAILURE, cx); + } + // This is a request to get a property across origins. We need to // determine if this property is allAccess. If it is, then we need to // actually get the property. If not, we simply need to throw an @@ -798,11 +788,6 @@ XPC_XOW_Enumerate(JSContext *cx, JSObject *obj) return JS_TRUE; } - XPCCallContext ccx(JS_CALLER, cx); - if (!ccx.IsValid()) { - return ThrowException(NS_ERROR_FAILURE, cx); - } - nsresult rv = CanAccessWrapper(cx, obj, wrappedObj, nsnull); if (NS_FAILED(rv)) { if (rv == NS_ERROR_DOM_PROP_ACCESS_DENIED) { @@ -894,11 +879,6 @@ XPC_XOW_NewResolve(JSContext *cx, JSObject *obj, jsval id, uintN flags, return JS_TRUE; } - XPCCallContext ccx(JS_CALLER, cx); - if (!ccx.IsValid()) { - return ThrowException(NS_ERROR_FAILURE, cx); - } - JSBool privilegeEnabled; nsresult rv = CanAccessWrapper(cx, obj, wrappedObj, &privilegeEnabled); if (NS_FAILED(rv)) { @@ -906,6 +886,11 @@ XPC_XOW_NewResolve(JSContext *cx, JSObject *obj, jsval id, uintN flags, return JS_FALSE; } + XPCCallContext ccx(JS_CALLER, cx); + if (!ccx.IsValid()) { + return ThrowException(NS_ERROR_FAILURE, cx); + } + // We're dealing with a cross-origin lookup. Ensure that we're allowed to // resolve this property and resolve it if so. Otherwise, we deny access // and throw a security error. Note that this code does not actually check @@ -1062,11 +1047,6 @@ XPC_XOW_Call(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) return JS_TRUE; } - XPCCallContext ccx(JS_CALLER, cx); - if (!ccx.IsValid()) { - return ThrowException(NS_ERROR_FAILURE, cx); - } - nsresult rv = CanAccessWrapper(cx, obj, wrappedObj, nsnull); if (NS_FAILED(rv)) { if (rv == NS_ERROR_DOM_PROP_ACCESS_DENIED) { @@ -1099,11 +1079,6 @@ XPC_XOW_Construct(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, return JS_TRUE; } - XPCCallContext ccx(JS_CALLER, cx); - if (!ccx.IsValid()) { - return ThrowException(NS_ERROR_FAILURE, cx); - } - nsresult rv = CanAccessWrapper(cx, realObj, wrappedObj, nsnull); if (NS_FAILED(rv)) { if (rv == NS_ERROR_DOM_PROP_ACCESS_DENIED) {