image/gif: image block is out of bounds (original) (raw)
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