aboutsummaryrefslogtreecommitdiff
path: root/object/store/packed/entry_inflate.go
diff options
context:
space:
mode:
Diffstat (limited to 'object/store/packed/entry_inflate.go')
-rw-r--r--object/store/packed/entry_inflate.go9
1 files changed, 9 insertions, 0 deletions
diff --git a/object/store/packed/entry_inflate.go b/object/store/packed/entry_inflate.go
index 1c3943e9..f79d86c0 100644
--- a/object/store/packed/entry_inflate.go
+++ b/object/store/packed/entry_inflate.go
@@ -7,6 +7,7 @@ import (
"math"
"codeberg.org/lindenii/furgit/internal/compress/zlib"
+ "codeberg.org/lindenii/furgit/internal/iolimit"
)
// zlibReaderAt opens a zlib reader starting at data offset within pack.
@@ -36,6 +37,7 @@ func inflateAt(pack *packFile, offset int, expectedSize int64) ([]byte, error) {
)
}
+ reader := iolimit.ExpectLengthReader(reader, expectedSize)
body := make([]byte, int(expectedSize))
_, err := io.ReadFull(reader, body)
@@ -43,6 +45,13 @@ func inflateAt(pack *packFile, offset int, expectedSize int64) ([]byte, error) {
return nil, err
}
+ var probe [1]byte
+
+ _, err = reader.Read(probe[:])
+ if err != nil && err != io.EOF {
+ return nil, err
+ }
+
return body, nil
}