MCPcopy Create free account
hub / github.com/containers/image / Read

Method Read

copy/digesting_reader.go:43–62  ·  view source on GitHub ↗
(p []byte)

Source from the content-addressed store, hash-verified

41}
42
43func (d *digestingReader) Read(p []byte) (int, error) {
44 n, err := d.source.Read(p)
45 if n > 0 {
46 if n2, err := d.hash.Write(p[:n]); n2 != n || err != nil {
47 // Coverage: This should not happen, the hash.Hash interface requires
48 // d.digest.Write to never return an error, and the io.Writer interface
49 // requires n2 == len(input) if no error is returned.
50 return 0, fmt.Errorf("updating digest during verification: %d vs. %d: %w", n2, n, err)
51 }
52 }
53 if err == io.EOF {
54 actualDigest := d.digester.Digest()
55 if actualDigest != d.expectedDigest {
56 d.validationFailed = true
57 return 0, fmt.Errorf("Digest did not match, expected %s, got %s", d.expectedDigest, actualDigest)
58 }
59 d.validationSucceeded = true
60 }
61 return n, err
62}

Callers

nothing calls this directly

Calls 2

WriteMethod · 0.80
DigestMethod · 0.65

Tested by

no test coverage detected