From bfc731498b9ad77c23c374c6586359f4a8a49d28 Mon Sep 17 00:00:00 2001 From: 0xkato <0xkkato@gmail.com> Date: Sun, 16 Nov 2025 00:56:07 +0100 Subject: [PATCH] fix: cap snappy/otlp decode size to 32MiB Signed-off-by: 0xkato <0xkkato@gmail.com> --- storage/remote/codec.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/storage/remote/codec.go b/storage/remote/codec.go index 7713f14a49..5b99c1e96f 100644 --- a/storage/remote/codec.go +++ b/storage/remote/codec.go @@ -64,7 +64,7 @@ func (e HTTPError) Status() int { // DecodeReadRequest reads a remote.Request from a http.Request. func DecodeReadRequest(r *http.Request) (*prompb.ReadRequest, error) { - compressed, err := io.ReadAll(io.LimitReader(r.Body, decodeReadLimit)) + compressed, err := io.ReadAll(io.LimitReader(r.Body, int64(snappy.MaxEncodedLen(decodeReadLimit)+1))) if err != nil { return nil, err } @@ -921,7 +921,7 @@ func FromLabelMatchers(matchers []*prompb.LabelMatcher) ([]*labels.Matcher, erro // snappy decompression. // Used also by documentation/examples/remote_storage. func DecodeWriteRequest(r io.Reader) (*prompb.WriteRequest, error) { - compressed, err := io.ReadAll(io.LimitReader(r, decodeWriteLimit)) + compressed, err := io.ReadAll(io.LimitReader(r, int64(snappy.MaxEncodedLen(decodeWriteLimit)+1))) if err != nil { return nil, err } @@ -949,7 +949,7 @@ func DecodeWriteRequest(r io.Reader) (*prompb.WriteRequest, error) { // snappy decompression. // Used also by documentation/examples/remote_storage. func DecodeWriteV2Request(r io.Reader) (*writev2.Request, error) { - compressed, err := io.ReadAll(io.LimitReader(r, decodeWriteLimit)) + compressed, err := io.ReadAll(io.LimitReader(r, int64(snappy.MaxEncodedLen(decodeWriteLimit)+1))) if err != nil { return nil, err }