diff --git a/content/oci/oci.go b/content/oci/oci.go index a473e5c1..d050944d 100644 --- a/content/oci/oci.go +++ b/content/oci/oci.go @@ -97,7 +97,7 @@ func NewWithContext(ctx context.Context, root string) (*Store, error) { return nil, fmt.Errorf("invalid OCI Image Layout: %w", err) } if err := store.loadIndexFile(ctx); err != nil { - return nil, fmt.Errorf("invalid OCI Image Layout: %w", err) + return nil, fmt.Errorf("invalid OCI Image Index: %w", err) } return store, nil diff --git a/content/oci/readonlyoci.go b/content/oci/readonlyoci.go index b70b7675..f908d169 100644 --- a/content/oci/readonlyoci.go +++ b/content/oci/readonlyoci.go @@ -57,7 +57,7 @@ func NewFromFS(ctx context.Context, fsys fs.FS) (*ReadOnlyStore, error) { return nil, fmt.Errorf("invalid OCI Image Layout: %w", err) } if err := store.loadIndexFile(ctx); err != nil { - return nil, fmt.Errorf("invalid OCI Image Layout: %w", err) + return nil, fmt.Errorf("invalid OCI Image Index: %w", err) } return store, nil diff --git a/content/reader.go b/content/reader.go index 11d27b23..3e062b75 100644 --- a/content/reader.go +++ b/content/reader.go @@ -70,7 +70,7 @@ func (vr *VerifyReader) Read(p []byte) (n int, err error) { return } -// Verify verifies the read content against the size and the digest. +// Verify checks for remaining unread content and verifies the read content against the digest func (vr *VerifyReader) Verify() error { if vr.verified { return nil @@ -120,7 +120,10 @@ func ReadAll(r io.Reader, desc ocispec.Descriptor) ([]byte, error) { buf := make([]byte, desc.Size) vr := NewVerifyReader(r, desc) - if _, err := io.ReadFull(vr, buf); err != nil { + if n, err := io.ReadFull(vr, buf); err != nil { + if errors.Is(err, io.ErrUnexpectedEOF) { + return nil, fmt.Errorf("read failed, expected content size of %d, got %d, for digest %s: %w", desc.Size, n, desc.Digest.String(), err) + } return nil, fmt.Errorf("read failed: %w", err) } if err := vr.Verify(); err != nil {