diff --git a/src/content/sanitizer/sanitizer.go b/src/content/sanitizer/sanitizer.go index c486be8..7789f42 100644 --- a/src/content/sanitizer/sanitizer.go +++ b/src/content/sanitizer/sanitizer.go @@ -69,8 +69,12 @@ func Sanitize(baseURL, input string) string { buffer.WriteString("<" + tagName + ">") } - if wrap { - buffer.WriteString("") + if tagName == "iframe" { + // autoclose iframes + buffer.WriteString("") + if wrap { + buffer.WriteString("") + } } else { tagStack = append(tagStack, tagName) } @@ -80,6 +84,7 @@ func Sanitize(baseURL, input string) string { } case html.EndTagToken: tagName := token.Data + // iframes are autoclosed. see above if tagName == "iframe" { continue } diff --git a/src/content/sanitizer/sanitizer_test.go b/src/content/sanitizer/sanitizer_test.go index eaa5f70..8f49f05 100644 --- a/src/content/sanitizer/sanitizer_test.go +++ b/src/content/sanitizer/sanitizer_test.go @@ -163,6 +163,16 @@ func TestInvalidNestedTag(t *testing.T) { } } +func TestValidIFrame(t *testing.T) { + input := `` + expected := `` + output := Sanitize("http://example.org/", input) + + if expected != output { + t.Errorf("Wrong output:\nwant: %s\nhave: %s", expected, output) + } +} + func TestInvalidIFrame(t *testing.T) { input := `` expected := ``