aboutsummaryrefslogtreecommitdiff
path: root/objectstore/loose/read_reader.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-22 17:27:37 +0000
committerGravatar Runxi Yu2026-03-22 17:27:37 +0000
commit8f577284f47f699855dcb3ceda21aa9d8be77c2f (patch)
tree36f8d47a1584bd80e9e114d5c68ad5ec6c333b88 /objectstore/loose/read_reader.go
parentinternal/testgit: why not make it more annoying to use ambient authority (diff)
signatureNo signature
objectstore{,/loose}: Document contracts more clearly
Diffstat (limited to 'objectstore/loose/read_reader.go')
-rw-r--r--objectstore/loose/read_reader.go15
1 files changed, 14 insertions, 1 deletions
diff --git a/objectstore/loose/read_reader.go b/objectstore/loose/read_reader.go
index 035aeaad..e6e130a5 100644
--- a/objectstore/loose/read_reader.go
+++ b/objectstore/loose/read_reader.go
@@ -52,7 +52,13 @@ func (store *Store) openInflated(id objectid.ObjectID) (*os.File, io.ReadCloser,
}
// ReadReaderFull reads a full serialized object stream as "type size\0content".
+//
// The caller must close the returned reader.
+//
+// Close releases resources only. It does not drain unread data for additional
+// validation. In particular, malformed trailing compressed data, trailing bytes
+// past the declared object size, and the zlib Adler-32 trailer may go
+// unverified unless the caller reads to io.EOF.
func (store *Store) ReadReaderFull(id objectid.ObjectID) (io.ReadCloser, error) {
file, zr, err := store.openInflated(id)
if err != nil {
@@ -79,8 +85,15 @@ func (store *Store) ReadReaderFull(id objectid.ObjectID) (io.ReadCloser, error)
}, nil
}
-// ReadReaderContent reads an object's type, declared content length, and content stream.
+// ReadReaderContent reads an object's type, declared content length, and
+// content stream.
+//
// The caller must close the returned reader.
+//
+// Close releases resources only. It does not drain unread data for additional
+// validation. In particular, malformed trailing compressed data, trailing bytes
+// past the declared object size, and the zlib Adler-32 trailer may go
+// unverified unless the caller reads to io.EOF.
func (store *Store) ReadReaderContent(id objectid.ObjectID) (objecttype.Type, int64, io.ReadCloser, error) {
file, zr, err := store.openInflated(id)
if err != nil {