@@ -763,21 +763,20 @@ func (d *Decoder) decompress4X8bit(dst, src []byte) ([]byte, error) {
763763d .bufs .Put (buf )
764764return nil , errors .New ("corruption detected: stream overrun 1" )
765765}
766+ // There must at least be 3 buffers left.
767+ if len (out ) < dstEvery * 3 - bufoff {
768+ d .bufs .Put (buf )
769+ return nil , errors .New ("corruption detected: stream overrun 2" )
770+ }
766771//copy(out, buf[0][:])
767772//copy(out[dstEvery:], buf[1][:])
768773//copy(out[dstEvery*2:], buf[2][:])
769- //copy(out[dstEvery*3:], buf[3][:])
770774* (* [bufoff ]byte )(out ) = buf [0 ]
771775* (* [bufoff ]byte )(out [dstEvery :]) = buf [1 ]
772776* (* [bufoff ]byte )(out [dstEvery * 2 :]) = buf [2 ]
773777* (* [bufoff ]byte )(out [dstEvery * 3 :]) = buf [3 ]
774778out = out [bufoff :]
775779decoded += bufoff * 4
776- // There must at least be 3 buffers left.
777- if len (out ) < dstEvery * 3 {
778- d .bufs .Put (buf )
779- return nil , errors .New ("corruption detected: stream overrun 2" )
780- }
781780}
782781}
783782if off > 0 {
@@ -1001,6 +1000,12 @@ func (d *Decoder) decompress4X8bitExactly(dst, src []byte) ([]byte, error) {
10011000d .bufs .Put (buf )
10021001return nil , errors .New ("corruption detected: stream overrun 1" )
10031002}
1003+ // There must at least be 3 buffers left.
1004+ if len (out ) < dstEvery * 3 - bufoff {
1005+ d .bufs .Put (buf )
1006+ return nil , errors .New ("corruption detected: stream overrun 2" )
1007+ }
1008+
10041009//copy(out, buf[0][:])
10051010//copy(out[dstEvery:], buf[1][:])
10061011//copy(out[dstEvery*2:], buf[2][:])
@@ -1011,11 +1016,6 @@ func (d *Decoder) decompress4X8bitExactly(dst, src []byte) ([]byte, error) {
10111016* (* [bufoff ]byte )(out [dstEvery * 3 :]) = buf [3 ]
10121017out = out [bufoff :]
10131018decoded += bufoff * 4
1014- // There must at least be 3 buffers left.
1015- if len (out ) < dstEvery * 3 {
1016- d .bufs .Put (buf )
1017- return nil , errors .New ("corruption detected: stream overrun 2" )
1018- }
10191019}
10201020}
10211021if off > 0 {
0 commit comments