From a2c6127832ba5ea1f24e586bb25661b0a275c2d6 Mon Sep 17 00:00:00 2001 From: Shadow Date: Fri, 7 Mar 2025 15:53:05 +0000 Subject: [PATCH] No Issue - Make nsCSPService cancel the channel if a redirect is blocked by CSP Bug 1338304 --- dom/security/nsCSPService.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dom/security/nsCSPService.cpp b/dom/security/nsCSPService.cpp index 7ba531030d..0b3054cfec 100644 --- a/dom/security/nsCSPService.cpp +++ b/dom/security/nsCSPService.cpp @@ -278,7 +278,11 @@ CSPService::AsyncOnChannelRedirect(nsIChannel *oldChannel, */ nsCOMPtr originalUri; rv = oldChannel->GetOriginalURI(getter_AddRefs(originalUri)); - NS_ENSURE_SUCCESS(rv, rv); + if (NS_FAILED(rv)) { + autoCallback.DontCallback(); + oldChannel->Cancel(NS_ERROR_DOM_BAD_URI); + return rv; + } bool isPreload = nsContentUtils::IsPreloadType(policyType); @@ -310,6 +314,7 @@ CSPService::AsyncOnChannelRedirect(nsIChannel *oldChannel, // is no point in checking the real policy if (NS_CP_REJECTED(aDecision)) { autoCallback.DontCallback(); + oldChannel->Cancel(NS_ERROR_DOM_BAD_URI); return NS_BINDING_FAILED; } } @@ -333,6 +338,7 @@ CSPService::AsyncOnChannelRedirect(nsIChannel *oldChannel, // if ShouldLoad doesn't accept the load, cancel the request if (!NS_CP_ACCEPTED(aDecision)) { autoCallback.DontCallback(); + oldChannel->Cancel(NS_ERROR_DOM_BAD_URI); return NS_BINDING_FAILED; } return NS_OK;