Skip to content

Commit 52fc827

Browse files
committed
bugfix:fix limactl panic because of invalid digest
Signed-off-by: ningmingxiao <[email protected]>
1 parent c1b8496 commit 52fc827

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

pkg/limayaml/validate.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -425,11 +425,12 @@ func validateFileObject(f File, fieldName string) error {
425425
errs = errors.Join(errs, fmt.Errorf("field `arch` must be one of %v; got %q", ArchTypes, f.Arch))
426426
}
427427
if f.Digest != "" {
428-
if !f.Digest.Algorithm().Available() {
429-
errs = errors.Join(errs, fmt.Errorf("field `%s.digest` refers to an unavailable digest algorithm", fieldName))
430-
}
431428
if err := f.Digest.Validate(); err != nil {
432429
errs = errors.Join(errs, fmt.Errorf("field `%s.digest` is invalid: %s: %w", fieldName, f.Digest.String(), err))
430+
return errs
431+
}
432+
if !f.Digest.Algorithm().Available() {
433+
errs = errors.Join(errs, fmt.Errorf("field `%s.digest` refers to an unavailable digest algorithm", fieldName))
433434
}
434435
}
435436
return errs

pkg/limayaml/validate_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,18 @@ func TestValidateMinimumLimaVersion(t *testing.T) {
7575

7676
func TestValidateProbes(t *testing.T) {
7777
images := `images: [{"location": "/"}]`
78+
images2 := `images: [{"location": "/",digest: "69f31d3208895e5f646e345fbc95190e5e311ecd1359a4d6ee2c0b6483ceca03"}]`
7879
validProbe := `probes: [{"script": "#!foo"}]`
7980
y, err := Load([]byte(validProbe+"\n"+images), "lima.yaml")
8081
assert.NilError(t, err)
81-
8282
err = Validate(y, false)
8383
assert.NilError(t, err)
8484

85+
y2, err := Load([]byte(validProbe+"\n"+images2), "lima.yaml")
86+
assert.NilError(t, err)
87+
err = Validate(y2, false)
88+
assert.Error(t, err, "field `images[0].digest` is invalid: 69f31d3208895e5f646e345fbc95190e5e311ecd1359a4d6ee2c0b6483ceca03: invalid checksum digest format")
89+
8590
invalidProbe := `probes: [{"script": "foo"}]`
8691
y, err = Load([]byte(invalidProbe+"\n"+images), "lima.yaml")
8792
assert.NilError(t, err)

0 commit comments

Comments
 (0)