diff --git a/src/HtmlSanitizer/HtmlSanitizer.cs b/src/HtmlSanitizer/HtmlSanitizer.cs index 90f6015..562e690 100644 --- a/src/HtmlSanitizer/HtmlSanitizer.cs +++ b/src/HtmlSanitizer/HtmlSanitizer.cs @@ -482,7 +482,7 @@ namespace Ganss.XSS using (var dom = parser.Parse(html)) { - DoSanitize(dom, dom.DocumentElement, baseUrl); + DoSanitize(dom, dom, baseUrl); var output = dom.ToHtml(outputFormatter ?? OutputFormatter); @@ -503,7 +503,7 @@ namespace Ganss.XSS using (var dom = parser.Parse(html)) { - DoSanitize(dom, dom.DocumentElement, baseUrl); + DoSanitize(dom, dom, baseUrl); var output = dom.ToHtml(outputFormatter ?? OutputFormatter); @@ -542,7 +542,7 @@ namespace Ganss.XSS } } - private void DoSanitize(IHtmlDocument dom, IElement context, string baseUrl = "") + private void DoSanitize(IHtmlDocument dom, IParentNode context, string baseUrl = "") { // remove non-whitelisted tags foreach (var tag in context.QuerySelectorAll("*").Where(t => !IsAllowedTag(t)).ToList()) @@ -607,9 +607,9 @@ namespace Ganss.XSS } } - RemoveComments(context); + RemoveComments(context as IElement); - DoPostProcess(dom, context); + DoPostProcess(dom, context as IElement); } private void SanitizeStyleSheets(IHtmlDocument dom, string baseUrl) diff --git a/test/HtmlSanitizer.Tests/Tests.cs b/test/HtmlSanitizer.Tests/Tests.cs index 7505510..9c22b6e 100644 --- a/test/HtmlSanitizer.Tests/Tests.cs +++ b/test/HtmlSanitizer.Tests/Tests.cs @@ -3135,6 +3135,19 @@ zqy1QY1kkPOuMvKWvvmFIwClI2393jVVcp91eda4+J+fIYDbfJa7RY5YcNrZhTuV//9k=""> Assert.True(anyNodeRemoved); Assert.Equal("
", actual); } + + [Fact] + public void HtmlDocumentTest() + { + // https://github.com/mganss/HtmlSanitizer/issues/164 + + var sanitizer = new HtmlSanitizer(); + var html = @""; + + var actual = sanitizer.SanitizeDocument(html); + + Assert.Equal("", actual); + } } }