1
0
mirror of https://github.com/golang/go synced 2024-11-18 15:44:41 -07:00

internal/zstd: allow empty compressed blocks

For #62513
This commit is contained in:
Alexander Yastrebov 2023-09-27 00:34:56 +02:00
parent 5e9afab7df
commit 902e952d88
2 changed files with 8 additions and 6 deletions

View File

@ -50,10 +50,9 @@ func (r *Reader) compressedBlock(blockSize int) error {
if off < len(data) {
return r.makeError(off, "extraneous data after no sequences")
}
if len(litbuf) == 0 {
return r.makeError(off, "no sequences and no literals")
}
r.buffer = append(r.buffer, litbuf...)
return nil
}
@ -374,9 +373,7 @@ func (r *Reader) execSeqs(data block, off int, litbuf []byte, seqCount int) erro
}
}
if len(litbuf) > 0 {
r.buffer = append(r.buffer, litbuf...)
}
r.buffer = append(r.buffer, litbuf...)
if rbr.cnt != 0 {
return r.makeError(off, "extraneous data after sequences")

View File

@ -90,6 +90,11 @@ var tests = []struct {
"0\x00\x00\x00\x00\x000\x00\x00\x00\x00\x001\x00\x00\x00\x00\x000000",
"(\xb5/\xfd\x04X\x8d\x00\x00P0\x000\x001\x000000\x03T\x02\x00\x01\x01m\xf9\xb7G",
},
{
"empty block",
"",
"\x28\xb5\x2f\xfd\x00\x00\x15\x00\x00\x00\x00",
},
}
func TestSamples(t *testing.T) {