diff options
author | Daniel J Walsh <dwalsh@redhat.com> | 2022-05-02 17:16:10 -0400 |
---|---|---|
committer | Daniel J Walsh <dwalsh@redhat.com> | 2022-05-02 17:16:10 -0400 |
commit | e247f02a4fbf3997e4ff01eecf30ac1002e993af (patch) | |
tree | 2d287c16b9a80f888074af6b6118625d74da6a16 /vendor/github.com/klauspost/compress/zstd/framedec.go | |
parent | 3ac5cec086e1ee1f11fabfd8a8f0aa8cf9f371f5 (diff) | |
download | podman-e247f02a4fbf3997e4ff01eecf30ac1002e993af.tar.gz podman-e247f02a4fbf3997e4ff01eecf30ac1002e993af.tar.bz2 podman-e247f02a4fbf3997e4ff01eecf30ac1002e993af.zip |
Vendor in containers/(common, storage, image)
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Diffstat (limited to 'vendor/github.com/klauspost/compress/zstd/framedec.go')
-rw-r--r-- | vendor/github.com/klauspost/compress/zstd/framedec.go | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/vendor/github.com/klauspost/compress/zstd/framedec.go b/vendor/github.com/klauspost/compress/zstd/framedec.go index 11089d223..509d5cece 100644 --- a/vendor/github.com/klauspost/compress/zstd/framedec.go +++ b/vendor/github.com/klauspost/compress/zstd/framedec.go @@ -326,6 +326,19 @@ func (d *frameDec) runDecoder(dst []byte, dec *blockDec) ([]byte, error) { d.history.ignoreBuffer = len(dst) // Store input length, so we only check new data. crcStart := len(dst) + d.history.decoders.maxSyncLen = 0 + if d.FrameContentSize != fcsUnknown { + d.history.decoders.maxSyncLen = d.FrameContentSize + uint64(len(dst)) + if d.history.decoders.maxSyncLen > d.o.maxDecodedSize { + return dst, ErrDecoderSizeExceeded + } + if uint64(cap(dst)) < d.history.decoders.maxSyncLen { + // Alloc for output + dst2 := make([]byte, len(dst), d.history.decoders.maxSyncLen+compressedBlockOverAlloc) + copy(dst2, dst) + dst = dst2 + } + } var err error for { err = dec.reset(d.rawInput, d.WindowSize) |