diff options
author | Dmitry Chestnykh <dchest@gmail.com> | 2012-04-04 09:52:42 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2012-04-04 09:52:42 -0400 |
commit | d98b9dac03eda5db7352a0fa634a29162226bfea (patch) | |
tree | 0b3141470b074148e857ca3de8c25f6dbacb20e8 | |
parent | ca246227a8d4123f4b66e0b6ae91ebdc37114343 (diff) | |
download | go-d98b9dac03eda5db7352a0fa634a29162226bfea.tar.gz go-d98b9dac03eda5db7352a0fa634a29162226bfea.zip |
[release-branch.go1] encoding/ascii85: fix panic caused by special case
««« backport b127df6df1ab
encoding/ascii85: fix panic caused by special case
Special case for encoding 4 zeros as 'z' didn't
update source slice, causing 'index out of bounds'
panic in destination slice.
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5970078
»»»
-rw-r--r-- | src/pkg/encoding/ascii85/ascii85.go | 1 | ||||
-rw-r--r-- | src/pkg/encoding/ascii85/ascii85_test.go | 5 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/pkg/encoding/ascii85/ascii85.go b/src/pkg/encoding/ascii85/ascii85.go index 7d004b5e5d..705022792a 100644 --- a/src/pkg/encoding/ascii85/ascii85.go +++ b/src/pkg/encoding/ascii85/ascii85.go @@ -57,6 +57,7 @@ func Encode(dst, src []byte) int { if v == 0 && len(src) >= 4 { dst[0] = 'z' dst = dst[1:] + src = src[4:] n++ continue } diff --git a/src/pkg/encoding/ascii85/ascii85_test.go b/src/pkg/encoding/ascii85/ascii85_test.go index 70e67d8b06..42cf7e80e1 100644 --- a/src/pkg/encoding/ascii85/ascii85_test.go +++ b/src/pkg/encoding/ascii85/ascii85_test.go @@ -28,6 +28,11 @@ var pairs = []testpair{ "l(DId<j@<?3r@:F%a+D58'ATD4$Bl@l3De:,-DJs`8ARoFb/0JMK@qB4^F!,R<AKZ&-DfTqBG%G\n" + ">uD.RTpAKYo'+CT/5+Cei#DII?(E,9)oF*2M7/c\n", }, + // Special case when shortening !!!!! to z. + { + "\000\000\000\000", + "z", + }, } var bigtest = pairs[len(pairs)-1] |