diff options
Diffstat (limited to 'object/store/packed/entry_inflate.go')
| -rw-r--r-- | object/store/packed/entry_inflate.go | 9 |
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 } |
