Bug 1883860 - nsDocShell::HandleSameDocumentNavigation() cause crash in SetDocumentURI, r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D204611
This commit is contained in:
@@ -144,6 +144,7 @@
|
||||
#include "nsIScriptChannel.h"
|
||||
#include "nsIScriptObjectPrincipal.h"
|
||||
#include "nsIScriptSecurityManager.h"
|
||||
#include "nsScriptSecurityManager.h"
|
||||
#include "nsIScrollableFrame.h"
|
||||
#include "nsIScrollObserver.h"
|
||||
#include "nsISupportsPrimitives.h"
|
||||
@@ -8689,24 +8690,18 @@ nsresult nsDocShell::HandleSameDocumentNavigation(
|
||||
}
|
||||
}
|
||||
|
||||
auto isLoadableViaInternet = [](nsIURI* uri) {
|
||||
return (uri && (net::SchemeIsHTTP(uri) || net::SchemeIsHTTPS(uri)));
|
||||
};
|
||||
|
||||
if (isLoadableViaInternet(principalURI) &&
|
||||
isLoadableViaInternet(mCurrentURI) && isLoadableViaInternet(newURI)) {
|
||||
nsIScriptSecurityManager* ssm = nsContentUtils::GetSecurityManager();
|
||||
if (!NS_SUCCEEDED(
|
||||
ssm->CheckSameOriginURI(newURI, principalURI, false, false)) ||
|
||||
!NS_SUCCEEDED(ssm->CheckSameOriginURI(mCurrentURI, principalURI,
|
||||
false, false))) {
|
||||
MOZ_LOG(gSHLog, LogLevel::Debug,
|
||||
("nsDocShell[%p]: possible violation of the same origin policy "
|
||||
"during same document navigation",
|
||||
this));
|
||||
aSameDocument = false;
|
||||
return NS_OK;
|
||||
}
|
||||
if (nsScriptSecurityManager::IsHttpOrHttpsAndCrossOrigin(principalURI,
|
||||
newURI) ||
|
||||
nsScriptSecurityManager::IsHttpOrHttpsAndCrossOrigin(principalURI,
|
||||
mCurrentURI) ||
|
||||
nsScriptSecurityManager::IsHttpOrHttpsAndCrossOrigin(mCurrentURI,
|
||||
newURI)) {
|
||||
aSameDocument = false;
|
||||
MOZ_LOG(gSHLog, LogLevel::Debug,
|
||||
("nsDocShell[%p]: possible violation of the same origin policy "
|
||||
"during same document navigation",
|
||||
this));
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user