1
0
mirror of https://github.com/golang/go synced 2024-11-20 02:34:42 -07:00

encoding/base64: fix panic when input len is not a multiple of 4

Fixes #3442.

R=for.go.yong, dsymonds, sougou, minux.ma, rsc
CC=golang-dev
https://golang.org/cl/5975052
This commit is contained in:
Dave Cheney 2012-04-03 12:14:02 +10:00 committed by David Symonds
parent 065db4ea99
commit 951a97e42f
2 changed files with 8 additions and 0 deletions

View File

@ -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

View File

@ -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 {