diff --git a/go.mod b/go.mod index 02a6701b7d..b4c04e8079 100644 --- a/go.mod +++ b/go.mod @@ -496,7 +496,7 @@ require ( go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect - golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect + golang.org/x/exp v0.0.0-20231006140011-7918f672742d golang.org/x/mod v0.13.0 // indirect golang.org/x/net v0.18.0 // indirect golang.org/x/term v0.14.0 // indirect diff --git a/pkg/extensions/search/cve/cve.go b/pkg/extensions/search/cve/cve.go index 18205ce7e2..44118e55c2 100644 --- a/pkg/extensions/search/cve/cve.go +++ b/pkg/extensions/search/cve/cve.go @@ -8,6 +8,7 @@ import ( godigest "github.com/opencontainers/go-digest" ispec "github.com/opencontainers/image-spec/specs-go/v1" + "golang.org/x/exp/slices" zerr "zotregistry.io/zot/errors" zcommon "zotregistry.io/zot/pkg/common" @@ -334,7 +335,15 @@ func filterCVEList(cveMap map[string]cvemodel.CVE, searchedCVE string, pageFinde for _, cve := range cveMap { if strings.Contains(strings.ToUpper(cve.Title), searchedCVE) || - strings.Contains(strings.ToUpper(cve.ID), searchedCVE) { + strings.Contains(strings.ToUpper(cve.ID), searchedCVE) || + strings.Contains(strings.ToUpper(cve.Description), searchedCVE) || + strings.Contains(strings.ToUpper(cve.Reference), searchedCVE) || + strings.Contains(strings.ToUpper(cve.Severity), searchedCVE) || + slices.ContainsFunc(cve.PackageList, func(pack cvemodel.Package) bool { + return strings.Contains(strings.ToUpper(pack.Name), searchedCVE) || + strings.Contains(strings.ToUpper(pack.FixedVersion), searchedCVE) || + strings.Contains(strings.ToUpper(pack.InstalledVersion), searchedCVE) + }) { pageFinder.Add(cve) } } diff --git a/pkg/extensions/search/schema.resolvers.go b/pkg/extensions/search/schema.resolvers.go index 06f2edd2a8..28fb34b5c5 100644 --- a/pkg/extensions/search/schema.resolvers.go +++ b/pkg/extensions/search/schema.resolvers.go @@ -20,11 +20,7 @@ func (r *queryResolver) CVEListForImage(ctx context.Context, image string, reque return &gql_generated.CVEResultForImage{}, zerr.ErrCVESearchDisabled } - if searchedCve == nil { - return getCVEListForImage(ctx, image, r.cveInfo, requestedPage, "", r.log) - } - - return getCVEListForImage(ctx, image, r.cveInfo, requestedPage, *searchedCve, r.log) + return getCVEListForImage(ctx, image, r.cveInfo, requestedPage, deref(searchedCve, ""), r.log) } // ImageListForCve is the resolver for the ImageListForCVE field.