From: Artyom Pervukhin Date: Thu, 26 Apr 2018 13:23:54 +0000 (+0100) Subject: encoding/xml: fix valid character range X-Git-Tag: go1.11beta1~462 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=4410934cbad454539312468aca276111c08f5582;p=gostls13.git encoding/xml: fix valid character range 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 TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- diff --git a/src/encoding/xml/xml.go b/src/encoding/xml/xml.go index fb52eec5f4..7d2ff01ee9 100644 --- a/src/encoding/xml/xml.go +++ b/src/encoding/xml/xml.go @@ -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 } diff --git a/src/encoding/xml/xml_test.go b/src/encoding/xml/xml_test.go index 7a3511d583..ee4ffa2420 100644 --- a/src/encoding/xml/xml_test.go +++ b/src/encoding/xml/xml_test.go @@ -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