]> Cypherpunks repositories - gostls13.git/commitdiff
exp/html: replace NUL with U+FFFD in text in foreign content
authorAndrew Balholm <andybalholm@gmail.com>
Sun, 29 Jul 2012 06:29:49 +0000 (16:29 +1000)
committerNigel Tao <nigeltao@golang.org>
Sun, 29 Jul 2012 06:29:49 +0000 (16:29 +1000)
Pass 5 additional tests.

R=nigeltao
CC=golang-dev
https://golang.org/cl/6452055

src/pkg/exp/html/parse.go
src/pkg/exp/html/testlogs/plain-text-unsafe.dat.log

index 986e9bbe460e78d35dc80511476650171106a13e..38e61677e36e4e697f2f221702a16b2e1505cd3e 100644 (file)
@@ -1846,14 +1846,16 @@ func afterAfterFramesetIM(p *parser) bool {
        return true
 }
 
+const whitespaceOrNUL = whitespace + "\x00"
+
 // Section 12.2.5.5.
 func parseForeignContent(p *parser) bool {
        switch p.tok.Type {
        case TextToken:
-               p.tok.Data = strings.Replace(p.tok.Data, "\x00", "", -1)
                if p.framesetOK {
-                       p.framesetOK = strings.TrimLeft(p.tok.Data, whitespace) == ""
+                       p.framesetOK = strings.TrimLeft(p.tok.Data, whitespaceOrNUL) == ""
                }
+               p.tok.Data = strings.Replace(p.tok.Data, "\x00", "\ufffd", -1)
                p.addText(p.tok.Data)
        case CommentToken:
                p.addChild(&Node{
index b63a237a15171f4b3d50b70c47a89a39fa610490..f2d18d4711779f124a7b63bcb06e3952ddcc4e33 100644 (file)
@@ -12,13 +12,13 @@ PASS "<svg><![CDATA[\x00filler\x00text\x00]]>"
 PASS "<body><!\x00>"
 PASS "<body><!\x00filler\x00text>"
 PASS "<body><svg><foreignObject>\x00filler\x00text"
-FAIL "<svg>\x00filler\x00text"
-FAIL "<svg>\x00<frameset>"
-FAIL "<svg>\x00 <frameset>"
-FAIL "<svg>\x00a<frameset>"
+PASS "<svg>\x00filler\x00text"
+PASS "<svg>\x00<frameset>"
+PASS "<svg>\x00 <frameset>"
+PASS "<svg>\x00a<frameset>"
 PASS "<svg>\x00</svg><frameset>"
 PASS "<svg>\x00 </svg><frameset>"
-FAIL "<svg>\x00a</svg><frameset>"
+PASS "<svg>\x00a</svg><frameset>"
 PASS "<svg><path></path></svg><frameset>"
 PASS "<svg><p><frameset>"
 PASS "<!DOCTYPE html><pre>\r\n\r\nA</pre>"