diff options
Diffstat (limited to 'parser/html')
-rw-r--r-- | parser/html/nsHtml5TreeOpExecutor.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/parser/html/nsHtml5TreeOpExecutor.cpp b/parser/html/nsHtml5TreeOpExecutor.cpp index b0eabb13d..468449698 100644 --- a/parser/html/nsHtml5TreeOpExecutor.cpp +++ b/parser/html/nsHtml5TreeOpExecutor.cpp @@ -1041,12 +1041,17 @@ nsHtml5TreeOpExecutor::AddSpeculationCSP(const nsAString& aCSP) NS_ASSERTION(NS_IsMainThread(), "Wrong thread!"); - nsIPrincipal* principal = mDocument->NodePrincipal(); + nsCOMPtr<nsIPrincipal> principal = mDocument->NodePrincipal(); nsCOMPtr<nsIContentSecurityPolicy> preloadCsp; nsCOMPtr<nsIDOMDocument> domDoc = do_QueryInterface(mDocument); nsresult rv = principal->EnsurePreloadCSP(domDoc, getter_AddRefs(preloadCsp)); NS_ENSURE_SUCCESS_VOID(rv); + if (!preloadCsp) { + // XXX: System principals can't preload CSP. We're done here. + return; + } + // please note that meta CSPs and CSPs delivered through a header need // to be joined together. rv = preloadCsp->AppendPolicy(aCSP, |