Skip to content

Commit a146adf

Browse files
committed
libimage: fix reference filters
Make sure that reference filters properly work on digests as well. To keep things simple, try to lookup an image for the user-specified value and compare IDs. This will implicitly fix #containers/podman/issues/18445 and probably more (unknown) issues. Fixes: #containers/podman/issues/18445 Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
1 parent e1ea4d9 commit a146adf

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

libimage/filters.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ func (r *Runtime) compileImageFilters(ctx context.Context, options *ListImagesOp
178178
filter = filterManifest(ctx, manifest)
179179

180180
case "reference":
181-
filter = filterReferences(value)
181+
filter = filterReferences(r, value)
182182

183183
case "until":
184184
until, err := r.until(value)
@@ -268,8 +268,15 @@ func filterManifest(ctx context.Context, value bool) filterFunc {
268268
}
269269

270270
// filterReferences creates a reference filter for matching the specified value.
271-
func filterReferences(value string) filterFunc {
271+
func filterReferences(r *Runtime, value string) filterFunc {
272+
lookedUp, _, _ := r.LookupImage(value, nil)
272273
return func(img *Image) (bool, error) {
274+
if lookedUp != nil {
275+
if lookedUp.ID() == img.ID() {
276+
return true, nil
277+
}
278+
}
279+
273280
refs, err := img.NamesReferences()
274281
if err != nil {
275282
return false, err
@@ -306,6 +313,7 @@ func filterReferences(value string) filterFunc {
306313
}
307314
}
308315
}
316+
309317
return false, nil
310318
}
311319
}

libimage/filters_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ func TestFilterReference(t *testing.T) {
6262
{"quay.io/libpod/*", 2},
6363
{"busybox", 1},
6464
{"alpine", 1},
65+
{"alpine@" + alpine.Digest().String(), 1},
6566
} {
6667
listOptions := &ListImagesOptions{
6768
Filters: []string{"reference=" + test.filter},

0 commit comments

Comments
 (0)