]> Cypherpunks repositories - gostls13.git/commitdiff
encoding/xml: fix valid character range
authorArtyom Pervukhin <artyom.pervukhin@gmail.com>
Thu, 26 Apr 2018 13:23:54 +0000 (14:23 +0100)
committerIan Lance Taylor <iant@golang.org>
Wed, 9 May 2018 17:31:08 +0000 (17:31 +0000)
Section 2.2 of the referenced spec http://www.xml.com/axml/testaxml.htm
defines 0xD7FF as a (sub)range boundary, not 0xDF77.

Fixes #25172

Change-Id: Ic5a3328cd46ef6474b8e93c4a343dcfba0e6511f
Reviewed-on: https://go-review.googlesource.com/109495
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/encoding/xml/xml.go
src/encoding/xml/xml_test.go

index fb52eec5f467c11706fde1a6a0bfa86d3955ef31..7d2ff01ee946a1ac42c912b507425c8df597d996 100644 (file)
@@ -1140,7 +1140,7 @@ func isInCharacterRange(r rune) (inrange bool) {
        return r == 0x09 ||
                r == 0x0A ||
                r == 0x0D ||
-               r >= 0x20 && r <= 0xDF77 ||
+               r >= 0x20 && r <= 0xD7FF ||
                r >= 0xE000 && r <= 0xFFFD ||
                r >= 0x10000 && r <= 0x10FFFF
 }
index 7a3511d58328376d26e26a2cf13422f2ac6fd789..ee4ffa242089753a4e382634181915a82b74f6e7 100644 (file)
@@ -650,6 +650,20 @@ func TestDisallowedCharacters(t *testing.T) {
        }
 }
 
+func TestIsInCharacterRange(t *testing.T) {
+       invalid := []rune{
+               utf8.MaxRune + 1,
+               0xD800, // surrogate min
+               0xDFFF, // surrogate max
+               -1,
+       }
+       for _, r := range invalid {
+               if isInCharacterRange(r) {
+                       t.Errorf("rune %U considered valid", r)
+               }
+       }
+}
+
 var procInstTests = []struct {
        input  string
        expect [2]string