[tor-browser/esr24] Bug 982906 - No free lunches! r=bzbarsky, a=lsblakk

commit 98514d2707597dca05a7318e3887b97c3b0b8857 Author: Blake Kaplan <mrbkap@gmail.com> Date: Thu Mar 13 18:55:13 2014 -0400 Bug 982906 - No free lunches! r=bzbarsky, a=lsblakk --- dom/base/nsGlobalWindow.cpp | 30 +++++++++++++++--------------- dom/base/nsGlobalWindow.h | 5 ++--- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp index 7b6707a..f2192d6 100644 --- a/dom/base/nsGlobalWindow.cpp +++ b/dom/base/nsGlobalWindow.cpp @@ -10829,14 +10829,12 @@ nsGlobalWindow::GetScrollFrame() nsresult nsGlobalWindow::BuildURIfromBase(const char *aURL, nsIURI **aBuiltURI, - bool *aFreeSecurityPass, JSContext **aCXused) { nsIScriptContext *scx = GetContextInternal(); JSContext *cx = nullptr; *aBuiltURI = nullptr; - *aFreeSecurityPass = false; if (aCXused) *aCXused = nullptr; @@ -10877,17 +10875,14 @@ nsGlobalWindow::BuildURIfromBase(const char *aURL, nsIURI **aBuiltURI, if (!sourceWindow) { sourceWindow = do_QueryInterface(NS_ISUPPORTS_CAST(nsIDOMWindow *, this)); - *aFreeSecurityPass = true; } - if (sourceWindow) { - nsCOMPtr<nsIDOMDocument> domDoc; - sourceWindow->GetDocument(getter_AddRefs(domDoc)); - nsCOMPtr<nsIDocument> doc(do_QueryInterface(domDoc)); - if (doc) { - baseURI = doc->GetDocBaseURI(); - charset = doc->GetDocumentCharacterSet(); - } + nsCOMPtr<nsIDOMDocument> domDoc; + sourceWindow->GetDocument(getter_AddRefs(domDoc)); + nsCOMPtr<nsIDocument> doc(do_QueryInterface(domDoc)); + if (doc) { + baseURI = doc->GetDocBaseURI(); + charset = doc->GetDocumentCharacterSet(); } if (aCXused) @@ -10899,17 +10894,22 @@ nsresult nsGlobalWindow::SecurityCheckURL(const char *aURL) { JSContext *cxUsed; - bool freePass; nsCOMPtr<nsIURI> uri; - if (NS_FAILED(BuildURIfromBase(aURL, getter_AddRefs(uri), &freePass, &cxUsed))) + if (NS_FAILED(BuildURIfromBase(aURL, getter_AddRefs(uri), &cxUsed))) { return NS_ERROR_FAILURE; + } + + if (!cxUsed) { + return NS_OK; + } AutoPushJSContext cx(cxUsed); - if (!freePass && NS_FAILED(nsContentUtils::GetSecurityManager()-> - CheckLoadURIFromScript(cx, uri))) + if (NS_FAILED(nsContentUtils::GetSecurityManager()-> + CheckLoadURIFromScript(cx, uri))) { return NS_ERROR_FAILURE; + } return NS_OK; } diff --git a/dom/base/nsGlobalWindow.h b/dom/base/nsGlobalWindow.h index aab2253..613dd2b 100644 --- a/dom/base/nsGlobalWindow.h +++ b/dom/base/nsGlobalWindow.h @@ -950,9 +950,8 @@ protected: already_AddRefed<nsIBaseWindow> GetTreeOwnerWindow(); already_AddRefed<nsIWebBrowserChrome> GetWebBrowserChrome(); nsresult SecurityCheckURL(const char *aURL); - nsresult BuildURIfromBase(const char *aURL, - nsIURI **aBuiltURI, - bool *aFreeSecurityPass, JSContext **aCXused); + nsresult BuildURIfromBase(const char *aURL, nsIURI **aBuiltURI, + JSContext **aCXused); bool PopupWhitelisted(); PopupControlState RevisePopupAbuseLevel(PopupControlState); void FireAbuseEvents(bool aBlocked, bool aWindow,
participants (1)
-
mikeperry@torproject.org