From 0191864e9013460c7c533ca98012bffd35ba5bba Mon Sep 17 00:00:00 2001 From: "reed%reedloden.com" Date: Fri, 22 Feb 2008 11:32:24 +0000 Subject: [PATCH] Bug 418119 - "nsIContentPolicy not called for external DTDs of XML documents" [p=trev.moz@adblockplus.org (Wladimir Palant) r=sicking sr=peterv a1.9=beltzner a=blocking1.9+] git-svn-id: svn://10.0.0.236/trunk@246302 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/parser/htmlparser/src/Makefile.in | 4 ++++ .../parser/htmlparser/src/nsExpatDriver.cpp | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/mozilla/parser/htmlparser/src/Makefile.in b/mozilla/parser/htmlparser/src/Makefile.in index 94facbfca1e..74ad47086b9 100644 --- a/mozilla/parser/htmlparser/src/Makefile.in +++ b/mozilla/parser/htmlparser/src/Makefile.in @@ -66,6 +66,10 @@ REQUIRES = xpcom \ nkcache \ intl \ xpconnect \ + layout \ + widget \ + caps \ + js \ $(NULL) SHARED_LIBRARY_LIBS = \ diff --git a/mozilla/parser/htmlparser/src/nsExpatDriver.cpp b/mozilla/parser/htmlparser/src/nsExpatDriver.cpp index fab4e1eaaff..f0507f40816 100644 --- a/mozilla/parser/htmlparser/src/nsExpatDriver.cpp +++ b/mozilla/parser/htmlparser/src/nsExpatDriver.cpp @@ -56,6 +56,9 @@ #include "nsCRT.h" #include "nsIConsoleService.h" #include "nsIScriptError.h" +#include "nsIContentPolicy.h" +#include "nsContentPolicyUtils.h" +#include "nsContentErrors.h" #include "nsXPCOMCIDInternal.h" #include "nsUnicharInputStream.h" @@ -796,6 +799,24 @@ nsExpatDriver::OpenInputStreamFromExternalDTD(const PRUnichar* aFPIStr, localURI.swap(uri); } + nsCOMPtr sink = do_QueryInterface(mSink); + nsCOMPtr doc; + if (sink) + doc = do_QueryInterface(sink->GetTarget()); + PRInt16 shouldLoad = nsIContentPolicy::ACCEPT; + rv = NS_CheckContentLoadPolicy(nsIContentPolicy::TYPE_OTHER, + uri, + (doc ? doc->NodePrincipal() : nsnull), + doc, + EmptyCString(), //mime guess + nsnull, //extra + &shouldLoad); + if (NS_FAILED(rv)) return rv; + if (NS_CP_REJECTED(shouldLoad)) { + // Disallowed by content policy + return NS_ERROR_CONTENT_BLOCKED; + } + rv = NS_OpenURI(aStream, uri); nsCAutoString absURL;