From 165be368c20e0a1184d5fd2cede0cd0920f233cc Mon Sep 17 00:00:00 2001 From: Klaus Post Date: Wed, 6 Mar 2024 11:38:00 +0100 Subject: [PATCH] zstd: Reject blocks where reserved values are not 0 (#885) ref: https://github.com/facebook/zstd/issues/3821 --- zstd/blockdec.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/zstd/blockdec.go b/zstd/blockdec.go index 9f17ce601f..03744fbc76 100644 --- a/zstd/blockdec.go +++ b/zstd/blockdec.go @@ -554,6 +554,9 @@ func (b *blockDec) prepareSequences(in []byte, hist *history) (err error) { if debugDecoder { printf("Compression modes: 0b%b", compMode) } + if compMode&3 != 0 { + return errors.New("corrupt block: reserved bits not zero") + } for i := uint(0); i < 3; i++ { mode := seqCompMode((compMode >> (6 - i*2)) & 3) if debugDecoder {