diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2012-05-04 15:01:11 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2012-05-04 15:01:11 +0000 |
commit | 33e337e34d69a2e298be8b6c109b601c2986339b (patch) | |
tree | df1037674f2c69011469485414315a50607f9d08 /libgo/go/encoding/base64 | |
parent | 1eae36f08cddc7779cd0ed75b359c9a54f67adff (diff) | |
download | gcc-33e337e34d69a2e298be8b6c109b601c2986339b.zip gcc-33e337e34d69a2e298be8b6c109b601c2986339b.tar.gz gcc-33e337e34d69a2e298be8b6c109b601c2986339b.tar.bz2 |
libgo: Update to Go 1.0.1 release.
From-SVN: r187163
Diffstat (limited to 'libgo/go/encoding/base64')
-rw-r--r-- | libgo/go/encoding/base64/base64.go | 5 | ||||
-rw-r--r-- | libgo/go/encoding/base64/base64_test.go | 3 |
2 files changed, 8 insertions, 0 deletions
diff --git a/libgo/go/encoding/base64/base64.go b/libgo/go/encoding/base64/base64.go index 55f9f67..f8a51a4 100644 --- a/libgo/go/encoding/base64/base64.go +++ b/libgo/go/encoding/base64/base64.go @@ -230,7 +230,12 @@ func (enc *Encoding) decode(dst, src []byte) (n int, end bool, err error) { if in == '=' && j >= 2 && len(src) < 4 { // We've reached the end and there's // padding + if len(src) == 0 && j == 2 { + // not enough padding + return n, false, CorruptInputError(len(osrc)) + } if len(src) > 0 && src[0] != '=' { + // incorrect padding return n, false, CorruptInputError(len(osrc) - len(src) - 1) } dlen = j diff --git a/libgo/go/encoding/base64/base64_test.go b/libgo/go/encoding/base64/base64_test.go index 3e9a843..9c35372 100644 --- a/libgo/go/encoding/base64/base64_test.go +++ b/libgo/go/encoding/base64/base64_test.go @@ -151,6 +151,9 @@ func TestDecodeCorrupt(t *testing.T) { {"AAA=AAAA", 3}, {"AAAAA", 4}, {"AAAAAA", 4}, + {"A=", 1}, + {"AA=", 3}, + {"AAAAAA=", 7}, } for _, e := range examples { |