@@ -28,12 +28,15 @@ type digestValidator interface {
28
28
}
29
29
30
30
func parseDigestValidator (digest string ) (digestValidator , error ) {
31
- alg := digest [:strings .Index (digest , ":" )]
31
+ i := strings .Index (digest , ":" )
32
+ if i < 0 {
33
+ return nil , ErrDigestAlgNotSupported
34
+ }
35
+ alg := digest [:i ]
32
36
if v , ok := validatorCtors [alg ]; ok {
33
37
return v (), nil
34
- } else {
35
- return nil , ErrDigestAlgNotSupported
36
38
}
39
+ return nil , ErrDigestAlgNotSupported
37
40
}
38
41
39
42
type sha256Validator struct {
@@ -62,15 +65,14 @@ type DigestValidationReader struct {
62
65
// NewDigestValidationReader creates a new reader that help you to validate digest when you read manifest or blob data.
63
66
func NewDigestValidationReader (digest string , reader io.Reader ) (* DigestValidationReader , error ) {
64
67
validator , err := parseDigestValidator (digest )
65
- if err == nil {
66
- return & DigestValidationReader {
67
- digest : digest ,
68
- digestValidator : validator ,
69
- reader : reader ,
70
- }, nil
71
- } else {
68
+ if err != nil {
72
69
return nil , err
73
70
}
71
+ return & DigestValidationReader {
72
+ digest : digest ,
73
+ digestValidator : validator ,
74
+ reader : reader ,
75
+ }, nil
74
76
}
75
77
76
78
// Read write to digest validator while read and validate digest when reach EOF.
@@ -98,6 +100,7 @@ type BlobDigestCalculator struct {
98
100
}
99
101
100
102
// NewBlobDigestCalculator creates a new calculator to help to calculate blob digest when uploading blob.
103
+ // You should use a new BlobDigestCalculator each time you upload a blob.
101
104
func NewBlobDigestCalculator () * BlobDigestCalculator {
102
105
return & BlobDigestCalculator {
103
106
h : sha256 .New (),
0 commit comments