mirror of
https://github.com/golang/go
synced 2024-11-20 00:04:43 -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:
parent
065db4ea99
commit
951a97e42f
@ -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
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user