From 48c6048e554ff4f428aefd41b9345ed5ec634783 Mon Sep 17 00:00:00 2001 From: Quentin Smith Date: Tue, 8 Nov 2016 16:47:04 -0500 Subject: encoding/xml: check type when unmarshaling innerxml field We only support unmarshaling into a string or a []byte, but we previously would try (and panic while) setting a slice of a different type. The docs say ",innerxml" is ignored if the type is not string or []byte, so do that for other slices as well. Fixes #15600. Change-Id: Ia64815945a14c3d04a0a45ccf413e38b58a69416 Reviewed-on: https://go-review.googlesource.com/32919 Run-TryBot: Quentin Smith TryBot-Result: Gobot Gobot Reviewed-by: Russ Cox --- src/encoding/xml/read.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/encoding/xml/read.go') diff --git a/src/encoding/xml/read.go b/src/encoding/xml/read.go index ba62366560..ed4470f3eb 100644 --- a/src/encoding/xml/read.go +++ b/src/encoding/xml/read.go @@ -582,7 +582,9 @@ Loop: case reflect.String: t.SetString(string(saveXMLData)) case reflect.Slice: - t.Set(reflect.ValueOf(saveXMLData)) + if t.Type().Elem().Kind() == reflect.Uint8 { + t.Set(reflect.ValueOf(saveXMLData)) + } } return nil -- cgit v1.3