From 0fa6f0e5c35098593b97ca2e4db9c8b48699bde0 Mon Sep 17 00:00:00 2001 From: "jst%mozilla.jstenback.com" Date: Thu, 20 Apr 2006 03:38:45 +0000 Subject: [PATCH] Fixing bug 233307. deCOMtaminating nsIScript* and related interfaces. r+sr=bryner@brianryner.com. git-svn-id: svn://10.0.0.236/trunk@194874 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/content/base/src/nsDOMParser.cpp | 8 ++-- mozilla/content/base/src/nsXMLHttpRequest.cpp | 37 ++++++++----------- 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/mozilla/content/base/src/nsDOMParser.cpp b/mozilla/content/base/src/nsDOMParser.cpp index 98e28c2f9ad..2a65fcea6a5 100644 --- a/mozilla/content/base/src/nsDOMParser.cpp +++ b/mozilla/content/base/src/nsDOMParser.cpp @@ -469,13 +469,11 @@ nsDOMParser::ParseFromStream(nsIInputStream *stream, rv = cc->GetJSContext(&cx); if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - nsCOMPtr scriptContext; - GetScriptContextFromJSContext(cx, getter_AddRefs(scriptContext)); + nsIScriptContext *scriptContext = GetScriptContextFromJSContext(cx); if (scriptContext) { - nsCOMPtr globalObject; - scriptContext->GetGlobalObject(getter_AddRefs(globalObject)); + nsCOMPtr window = + do_QueryInterface(scriptContext->GetGlobalObject()); - nsCOMPtr window = do_QueryInterface(globalObject); if (window) { nsCOMPtr domdoc; window->GetDocument(getter_AddRefs(domdoc)); diff --git a/mozilla/content/base/src/nsXMLHttpRequest.cpp b/mozilla/content/base/src/nsXMLHttpRequest.cpp index 830b97b6986..a0c2361dd8b 100644 --- a/mozilla/content/base/src/nsXMLHttpRequest.cpp +++ b/mozilla/content/base/src/nsXMLHttpRequest.cpp @@ -112,30 +112,24 @@ static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); XML_HTTP_REQUEST_SENT | \ XML_HTTP_REQUEST_STOPPED) -static void -GetCurrentContext(nsIScriptContext **aScriptContext) +static nsIScriptContext * +GetCurrentContext() { - *aScriptContext = nsnull; - // Get JSContext from stack. nsCOMPtr stack = do_GetService("@mozilla.org/js/xpc/ContextStack;1"); if (!stack) { - return; + return nsnull; } JSContext *cx; - if (NS_FAILED(stack->Peek(&cx))) { - return; + if (NS_FAILED(stack->Peek(&cx)) || !cx) { + return nsnull; } - if (cx) { - GetScriptContextFromJSContext(cx, aScriptContext); - } - - return; + return GetScriptContextFromJSContext(cx); } /** @@ -151,9 +145,8 @@ GetDocumentFromScriptContext(nsIScriptContext *aScriptContext) if (!aScriptContext) return nsnull; - nsCOMPtr global; - aScriptContext->GetGlobalObject(getter_AddRefs(global)); - nsCOMPtr window = do_QueryInterface(global); + nsCOMPtr window = + do_QueryInterface(aScriptContext->GetGlobalObject()); nsIDocument *doc = nsnull; if (window) { nsCOMPtr domdoc; @@ -233,7 +226,7 @@ nsXMLHttpRequest::AddEventListener(const nsAString& type, else { return NS_ERROR_INVALID_ARG; } - GetCurrentContext(getter_AddRefs(mScriptContext)); + mScriptContext = GetCurrentContext(); return NS_OK; } @@ -290,7 +283,7 @@ nsXMLHttpRequest::SetOnreadystatechange(nsIOnReadystatechangeHandler * aOnreadys { mOnReadystatechangeListener = aOnreadystatechange; - GetCurrentContext(getter_AddRefs(mScriptContext)); + mScriptContext = GetCurrentContext(); return NS_OK; } @@ -313,7 +306,7 @@ nsXMLHttpRequest::SetOnload(nsIDOMEventListener * aOnLoad) { mOnLoadListener = aOnLoad; - GetCurrentContext(getter_AddRefs(mScriptContext)); + mScriptContext = GetCurrentContext(); return NS_OK; } @@ -335,7 +328,7 @@ nsXMLHttpRequest::SetOnerror(nsIDOMEventListener * aOnerror) { mOnErrorListener = aOnerror; - GetCurrentContext(getter_AddRefs(mScriptContext)); + mScriptContext = GetCurrentContext(); return NS_OK; } @@ -602,7 +595,7 @@ nsXMLHttpRequest::GetLoadGroup(nsILoadGroup **aLoadGroup) *aLoadGroup = nsnull; if (!mScriptContext) { - GetCurrentContext(getter_AddRefs(mScriptContext)); + mScriptContext = GetCurrentContext(); } nsCOMPtr doc = GetDocumentFromScriptContext(mScriptContext); @@ -620,7 +613,7 @@ nsXMLHttpRequest::GetBaseURI(nsIURI **aBaseURI) *aBaseURI = nsnull; if (!mScriptContext) { - GetCurrentContext(getter_AddRefs(mScriptContext)); + mScriptContext = GetCurrentContext(); if (!mScriptContext) { return NS_OK; } @@ -1321,7 +1314,7 @@ nsXMLHttpRequest::Send(nsIVariant *aBody) if (!mScriptContext) { // We need a context to check if redirect (if any) is allowed - GetCurrentContext(getter_AddRefs(mScriptContext)); + mScriptContext = GetCurrentContext(); } // Hook us up to listen to redirects and the like