No Issue - Make nsCSPService cancel the channel if a redirect is blocked by CSP

Bug 1338304
This commit is contained in:
Shadow 2025-03-07 15:53:05 +00:00 committed by roytam1
commit a2c6127832

View file

@ -278,7 +278,11 @@ CSPService::AsyncOnChannelRedirect(nsIChannel *oldChannel,
*/
nsCOMPtr<nsIURI> 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;