Make sure slice is not out of range when reading XML prolog

This commit is contained in:
Frédéric Guillot 2018-11-24 12:17:00 -08:00
parent 70be08eaf8
commit f3bff76aa1
3 changed files with 8 additions and 1 deletions

View File

@ -84,7 +84,12 @@ func (r *Response) EnsureUnicodeBody() (err error) {
// We ignore documents with encoding specified in XML prolog.
// This is going to be handled by the XML parser.
if xmlEncodingRegex.Match(buffer[0:1024]) {
length := 1024
if len(buffer) < 1024 {
length = len(buffer)
}
if xmlEncodingRegex.Match(buffer[0:length]) {
return
}
}

View File

@ -123,6 +123,7 @@ func TestEnsureUnicodeWithHTMLDocuments(t *testing.T) {
{"rdf_utf8.xml", "application/rss+xml; charset=utf-8", true},
{"charset-content-type-xml-iso88591.xml", "application/rss+xml; charset=ISO-8859-1", false},
{"windows_1251.xml", "text/xml", false},
{"smallfile.xml", "text/xml; charset=utf-8", true},
}
for _, tc := range unicodeTestCases {

1
http/client/testdata/smallfile.xml vendored Normal file
View File

@ -0,0 +1 @@
<?xml version="1.0"?>