diff options
| author | 2026-02-21 03:57:20 +0800 | |
|---|---|---|
| committer | 2026-02-21 03:57:20 +0800 | |
| commit | eeadac1851149248e788579cc83b925c27c2a8e1 (patch) | |
| tree | 16e96a0d9d344e4f728d7759006b846cf95af688 /objectstore/loose/read_bytes.go | |
| parent | objectstore: Clarify the hash contract in ReadBytesFull (diff) | |
| signature | No signature | |
objectstore/loose: Verify the length where possible.
Diffstat (limited to 'objectstore/loose/read_bytes.go')
| -rw-r--r-- | objectstore/loose/read_bytes.go | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/objectstore/loose/read_bytes.go b/objectstore/loose/read_bytes.go index 4d1cb439..80350809 100644 --- a/objectstore/loose/read_bytes.go +++ b/objectstore/loose/read_bytes.go @@ -12,7 +12,14 @@ func (store *Store) ReadBytesFull(id objectid.ObjectID) ([]byte, error) { return nil, err } defer func() { _ = file.Close() }() - return decodeAll(file) + raw, err := decodeAll(file) + if err != nil { + return nil, err + } + if _, _, err := parseRaw(raw); err != nil { + return nil, err + } + return raw, nil } // ReadBytesContent reads an object's type and content bytes. @@ -21,7 +28,7 @@ func (store *Store) ReadBytesContent(id objectid.ObjectID) (objecttype.Type, []b if err != nil { return objecttype.TypeInvalid, nil, err } - ty, content, err := parseRaw(raw) + ty, content, err := parseRaw(raw) // Just for the size check. if err != nil { return objecttype.TypeInvalid, nil, err } |
