From 88a779e421dcc3ba1a60a41bff419645ee8f156c Mon Sep 17 00:00:00 2001 From: "mozilla.BenB%bucksch.org" Date: Tue, 16 Apr 2002 18:24:14 +0000 Subject: [PATCH] 108153, 30888, 69529, 126082: New HTML message body options for Mailnews Provide a work around / fix for some of the security and usability problems that HTML mails currently impose, by not rendering everything the sender throws at the user. This class removes every HTML tag/attribute that is not explicitly allowed from the source. Adding new class to build r=akk, sr=jst git-svn-id: svn://10.0.0.236/trunk@119118 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/content/base/public/MANIFEST | 1 + mozilla/content/base/public/Makefile.in | 1 + mozilla/content/base/public/makefile.win | 1 + mozilla/content/base/public/nsContentCID.h | 4 +++ .../content/base/public/nsIHTMLToTextSink.h | 1 + mozilla/content/base/src/Makefile.in | 1 + mozilla/content/base/src/makefile.win | 1 + mozilla/content/build/nsContentCID.h | 4 +++ mozilla/content/build/nsContentModule.cpp | 7 +++++ mozilla/content/macbuild/content.xml | 30 +++++++++++++++++++ 10 files changed, 51 insertions(+) diff --git a/mozilla/content/base/public/MANIFEST b/mozilla/content/base/public/MANIFEST index 805b3c61427..78e4e5cf058 100644 --- a/mozilla/content/base/public/MANIFEST +++ b/mozilla/content/base/public/MANIFEST @@ -27,3 +27,4 @@ nsIStyleSheet.h nsIStyleSheetLinkingElement.h nsITextContent.h nsIContentList.h +mozISanitizingSerializer.h diff --git a/mozilla/content/base/public/Makefile.in b/mozilla/content/base/public/Makefile.in index 3179cbb90aa..0d8c24e8d47 100644 --- a/mozilla/content/base/public/Makefile.in +++ b/mozilla/content/base/public/Makefile.in @@ -55,6 +55,7 @@ nsITextContent.h \ nsIPrivateDOMImplementation.h \ nsIContentSerializer.h \ nsIHTMLToTextSink.h \ +mozISanitizingSerializer.h \ nsIContentList.h \ $(NULL) diff --git a/mozilla/content/base/public/makefile.win b/mozilla/content/base/public/makefile.win index 74d364afd98..78870f8bf27 100644 --- a/mozilla/content/base/public/makefile.win +++ b/mozilla/content/base/public/makefile.win @@ -47,6 +47,7 @@ EXPORTS = \ nsIPrivateDOMImplementation.h \ nsIContentSerializer.h \ nsIHTMLToTextSink.h \ + mozISanitizingSerializer.h \ nsIContentList.h \ $(NULL) diff --git a/mozilla/content/base/public/nsContentCID.h b/mozilla/content/base/public/nsContentCID.h index ee6a67764ef..011709cb9f1 100644 --- a/mozilla/content/base/public/nsContentCID.h +++ b/mozilla/content/base/public/nsContentCID.h @@ -220,6 +220,10 @@ #define NS_HTMLCONTENTSERIALIZER_CID \ { 0x9d3f70da, 0x86e9, 0x11d4, { 0x95, 0xec, 0x00, 0xb0, 0xd0, 0x3e, 0x37, 0xb7 } } +// {feca3c34-205e-4ae5-bd1c-03c686ff012b} +#define MOZ_SANITIZINGHTMLSERIALIZER_CID \ +{ 0xfeca3c34, 0x205e, 0x4ae5, { 0xbd, 0x1c, 0x03, 0xc6, 0x86, 0xff, 0x01, 0x2b } } + // {6030f7ef-32ed-46a7-9a63-6a5d3f90445f} #define NS_PLAINTEXTSERIALIZER_CID \ { 0x6030f7ef, 0x32ed, 0x46a7, { 0x9a, 0x63, 0x6a, 0x5d, 0x3f, 0x90, 0x44, 0x5f } } diff --git a/mozilla/content/base/public/nsIHTMLToTextSink.h b/mozilla/content/base/public/nsIHTMLToTextSink.h index 05bdc374de2..581006cc578 100644 --- a/mozilla/content/base/public/nsIHTMLToTextSink.h +++ b/mozilla/content/base/public/nsIHTMLToTextSink.h @@ -59,6 +59,7 @@ class nsIHTMLToTextSink : public nsISupports { NS_IMETHOD Initialize(nsAString* aOutString, PRUint32 aFlags, PRUint32 aWrapCol) = 0; + // This function violates string ownership rules, see impl. }; #endif diff --git a/mozilla/content/base/src/Makefile.in b/mozilla/content/base/src/Makefile.in index ffc3825a542..01f1bf33d6a 100644 --- a/mozilla/content/base/src/Makefile.in +++ b/mozilla/content/base/src/Makefile.in @@ -95,6 +95,7 @@ CPPSRCS = \ nsHTMLContentSerializer.cpp \ nsParserUtils.cpp \ nsPlainTextSerializer.cpp \ + mozSanitizingSerializer.cpp \ nsScriptLoader.cpp \ nsStyleLinkElement.cpp \ nsContentAreaDragDrop.cpp \ diff --git a/mozilla/content/base/src/makefile.win b/mozilla/content/base/src/makefile.win index 6767317f7d4..36ad94a636b 100644 --- a/mozilla/content/base/src/makefile.win +++ b/mozilla/content/base/src/makefile.win @@ -94,6 +94,7 @@ CPP_OBJS= \ .\$(OBJDIR)\nsHTMLContentSerializer.obj \ .\$(OBJDIR)\nsParserUtils.obj \ .\$(OBJDIR)\nsPlainTextSerializer.obj \ + .\$(OBJDIR)\mozSanitizingSerializer.obj \ .\$(OBJDIR)\nsContentUtils.obj \ .\$(OBJDIR)\nsScriptLoader.obj \ .\$(OBJDIR)\nsStyleLinkElement.obj \ diff --git a/mozilla/content/build/nsContentCID.h b/mozilla/content/build/nsContentCID.h index ee6a67764ef..011709cb9f1 100644 --- a/mozilla/content/build/nsContentCID.h +++ b/mozilla/content/build/nsContentCID.h @@ -220,6 +220,10 @@ #define NS_HTMLCONTENTSERIALIZER_CID \ { 0x9d3f70da, 0x86e9, 0x11d4, { 0x95, 0xec, 0x00, 0xb0, 0xd0, 0x3e, 0x37, 0xb7 } } +// {feca3c34-205e-4ae5-bd1c-03c686ff012b} +#define MOZ_SANITIZINGHTMLSERIALIZER_CID \ +{ 0xfeca3c34, 0x205e, 0x4ae5, { 0xbd, 0x1c, 0x03, 0xc6, 0x86, 0xff, 0x01, 0x2b } } + // {6030f7ef-32ed-46a7-9a63-6a5d3f90445f} #define NS_PLAINTEXTSERIALIZER_CID \ { 0x6030f7ef, 0x32ed, 0x46a7, { 0x9a, 0x63, 0x6a, 0x5d, 0x3f, 0x90, 0x44, 0x5f } } diff --git a/mozilla/content/build/nsContentModule.cpp b/mozilla/content/build/nsContentModule.cpp index 84f8f367766..45a6f65361a 100644 --- a/mozilla/content/build/nsContentModule.cpp +++ b/mozilla/content/build/nsContentModule.cpp @@ -99,6 +99,7 @@ #include "nsIXBLService.h" #include "nsLayoutAtoms.h" #include "nsPlainTextSerializer.h" +#include "mozSanitizingSerializer.h" #include "nsRange.h" #include "nsXMLContentSerializer.h" #include "nsRuleNode.h" @@ -343,6 +344,7 @@ MAKE_CTOR(CreateHTMLCopyTextEncoder, nsIDocumentEncoder, NS_NewHTM MAKE_CTOR(CreateXMLContentSerializer, nsIContentSerializer, NS_NewXMLContentSerializer) MAKE_CTOR(CreateHTMLContentSerializer, nsIContentSerializer, NS_NewHTMLContentSerializer) MAKE_CTOR(CreatePlainTextSerializer, nsIContentSerializer, NS_NewPlainTextSerializer) +MAKE_CTOR(CreateSanitizingHTMLSerializer, nsIContentSerializer, NS_NewSanitizingHTMLSerializer) MAKE_CTOR(CreateXBLService, nsIXBLService, NS_NewXBLService) MAKE_CTOR(CreateBindingManager, nsIBindingManager, NS_NewBindingManager) MAKE_CTOR(CreateContentPolicy, nsIContentPolicy, NS_NewContentPolicy) @@ -720,6 +722,11 @@ static const nsModuleComponentInfo gComponents[] = { NS_PLAINTEXTSINK_CONTRACTID, CreatePlainTextSerializer }, + { "HTML sanitizing content serializer", + MOZ_SANITIZINGHTMLSERIALIZER_CID, + MOZ_SANITIZINGHTMLSERIALIZER_CONTRACTID, + CreateSanitizingHTMLSerializer }, + { "XBL Service", NS_XBLSERVICE_CID, "@mozilla.org/xbl;1", diff --git a/mozilla/content/macbuild/content.xml b/mozilla/content/macbuild/content.xml index e9e8b57a950..bb5a351586e 100644 --- a/mozilla/content/macbuild/content.xml +++ b/mozilla/content/macbuild/content.xml @@ -2436,6 +2436,13 @@ Text Debug + + Name + mozSanitizingSerializer.cpp + MacOS + Text + Debug + Name nsDOMCSSRGBColor.cpp @@ -3535,6 +3542,11 @@ nsWyciwygProtocolHandler.cpp MacOS + + Name + mozSanitizingSerializer.cpp + MacOS + Name nsDOMCSSRGBColor.cpp @@ -5925,6 +5937,13 @@ Text Debug + + Name + mozSanitizingSerializer.cpp + MacOS + Text + Debug + Name nsDOMCSSRGBColor.cpp @@ -7024,6 +7043,11 @@ nsWyciwygProtocolHandler.cpp MacOS + + Name + mozSanitizingSerializer.cpp + MacOS + Name nsDOMCSSRGBColor.cpp @@ -7262,6 +7286,12 @@ nsContentAreaDragDrop.cpp MacOS + + content.shlb + Name + mozSanitizingSerializer.cpp + MacOS + build