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;