diff options
author | Leigh McCulloch <leighmcc@gmail.com> | 2017-10-27 07:04:57 +0000 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2017-11-01 20:39:57 +0000 |
commit | 14bc4f5e5fd5a113c97bdf1455b4f7d36a81f54b (patch) | |
tree | 4dd177f6a897c563194f81738ead79575792e6e2 /src/encoding/xml/read.go | |
parent | 776cdefc072fc916b5f74a7d7fb6e4573a6c8e89 (diff) | |
download | go-14bc4f5e5fd5a113c97bdf1455b4f7d36a81f54b.tar.gz go-14bc4f5e5fd5a113c97bdf1455b4f7d36a81f54b.zip |
encoding/xml: ignore whitespace in values and attrs
Whitespace is ignored in bool values and attrs. It is convenient and
relatively safe since whitespace around a bool value is often
unimportant. The same logic can be applied to numeric values of types
int, uint, and float.
Fixes #22146
Change-Id: Ie0462def90304af144b8e2e72d85b644857c27cc
Reviewed-on: https://go-review.googlesource.com/73891
Reviewed-by: Sam Whited <sam@samwhited.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Sam Whited <sam@samwhited.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/encoding/xml/read.go')
-rw-r--r-- | src/encoding/xml/read.go | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/encoding/xml/read.go b/src/encoding/xml/read.go index 6709d5aeba..36c7ba6311 100644 --- a/src/encoding/xml/read.go +++ b/src/encoding/xml/read.go @@ -113,7 +113,7 @@ import ( // Unmarshal maps an XML element or attribute value to an integer or // floating-point field by setting the field to the result of // interpreting the string value in decimal. There is no check for -// overflow. +// overflow. Whitespace is trimmed and ignored. // // Unmarshal maps an XML element to a Name by recording the element // name. @@ -615,7 +615,7 @@ func copyValue(dst reflect.Value, src []byte) (err error) { dst.SetInt(0) return nil } - itmp, err := strconv.ParseInt(string(src), 10, dst.Type().Bits()) + itmp, err := strconv.ParseInt(strings.TrimSpace(string(src)), 10, dst.Type().Bits()) if err != nil { return err } @@ -625,7 +625,7 @@ func copyValue(dst reflect.Value, src []byte) (err error) { dst.SetUint(0) return nil } - utmp, err := strconv.ParseUint(string(src), 10, dst.Type().Bits()) + utmp, err := strconv.ParseUint(strings.TrimSpace(string(src)), 10, dst.Type().Bits()) if err != nil { return err } @@ -635,7 +635,7 @@ func copyValue(dst reflect.Value, src []byte) (err error) { dst.SetFloat(0) return nil } - ftmp, err := strconv.ParseFloat(string(src), dst.Type().Bits()) + ftmp, err := strconv.ParseFloat(strings.TrimSpace(string(src)), dst.Type().Bits()) if err != nil { return err } |