From 2cb9f3ceb89038721eb9528dcc56dd33b66b0c85 Mon Sep 17 00:00:00 2001 From: janekptacijarabaci Date: Mon, 30 Apr 2018 23:02:01 +0200 Subject: Bug 1307736 - Ensure History loads pass valid triggeringPrincipal --- docshell/base/nsDocShell.cpp | 9 ++++----- docshell/shistory/nsSHEntry.cpp | 7 +++++++ 2 files changed, 11 insertions(+), 5 deletions(-) (limited to 'docshell') diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp index be8cd6a8d..1a6099d7a 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -12660,12 +12660,11 @@ nsDocShell::LoadHistoryEntry(nsISHEntry* aEntry, uint32_t aLoadType) srcdoc = NullString(); } - // If there is no triggeringPrincipal we can fall back to using the - // SystemPrincipal as the triggeringPrincipal for loading the history - // entry, since the history entry can only end up in history if security - // checks passed in the initial loading phase. + // If there is no valid triggeringPrincipal, we deny the load + MOZ_ASSERT(triggeringPrincipal, + "need a valid triggeringPrincipal to load from history"); if (!triggeringPrincipal) { - triggeringPrincipal = nsContentUtils::GetSystemPrincipal(); + return NS_ERROR_FAILURE; } // Passing nullptr as aSourceDocShell gives the same behaviour as before diff --git a/docshell/shistory/nsSHEntry.cpp b/docshell/shistory/nsSHEntry.cpp index 9d972136f..9d8bf5096 100644 --- a/docshell/shistory/nsSHEntry.cpp +++ b/docshell/shistory/nsSHEntry.cpp @@ -416,6 +416,9 @@ nsSHEntry::Create(nsIURI* aURI, const nsAString& aTitle, uint64_t aDocShellID, bool aDynamicCreation) { + MOZ_ASSERT(aTriggeringPrincipal, + "need a valid triggeringPrincipal to create a session history entry"); + mURI = aURI; mTitle = aTitle; mPostData = aInputStream; @@ -515,6 +518,10 @@ nsSHEntry::GetTriggeringPrincipal(nsIPrincipal** aTriggeringPrincipal) NS_IMETHODIMP nsSHEntry::SetTriggeringPrincipal(nsIPrincipal* aTriggeringPrincipal) { + MOZ_ASSERT(aTriggeringPrincipal, "need a valid triggeringPrincipal"); + if (!aTriggeringPrincipal) { + return NS_ERROR_FAILURE; + } mShared->mTriggeringPrincipal = aTriggeringPrincipal; return NS_OK; } -- cgit v1.2.3