Closed
Description
The following program crashes with "image block is out of bounds". Either Decode should not produce such image, or Encode should accept it.
package main
import (
"bytes"
"image/gif"
"strings"
)
func main() {
img, err := gif.Decode(strings.NewReader(data))
if err != nil {
return
}
var w bytes.Buffer
err = gif.Encode(&w, img, nil)
if err != nil {
panic(err)
}
}
var data = "GIF89a0000000,0\x000\x00\x1e\x00" +
"\x14\x00\x8600000000000000000" +
"00000000000000000000" +
"00000000000000000000" +
"00000000000000000000" +
"00000000000000000000" +
"00000000000000000000" +
"00000000000000000000" +
"00000000000000000000" +
"00000U\xa1\xb1$\x9b\x9e\x97\xb97,\xaf\x1ay\xa4\x14" +
"\xea3\x96\x97\xc6e_\x10G\x8eS\xd2Mm\xa9\xa0\x19\xefF\xfe" +
"\x97ợ.\xd0;0\x97\x14\xd50v!\xfbȒ\xe2ߗ" +
"_}\x99`\v״\x98\xa8\xe0\xbdݺ\xaa\xce6\xd2MT " +
"p\xe03\xdb\x10?J\xa8\xbe\xdc\xd1\x13\x89f\x05\xc4n;\xf3\x1c" +
"\b5\xe0\x91\xdf\xde\x12qE<\xd6P\xf1O\x88\x8aD\xdf\u007f\xbc" +
"\xc9Ͱ\x99\xb7\xe7n\u008dN9l\xca\xd0k8\x8e\xee\x84\xcb" +
"\xbd\xf6K\x03\xc2s\x80|\xfb\xe91r\xbc\xfb\xeeu\x12r\u007f\xc0" +
"}ȩ\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" +
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" +
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" +
"\x00\x00\x00\x00\x00\x00\x00\a$F\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b" +
"\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f" +
"\xa0\xa1\xa2\x85\x81\x00;"
panic: gif: image block is out of bounds
goroutine 1 [running]:
main.main()
gif.go:17 +0x19d
go version devel +fbb4c74 Sat May 2 02:48:32 2015 +0000 darwin/amd64