diff --git a/pkg/security/resolvers/sbom/file_querier.go b/pkg/security/resolvers/sbom/file_querier.go index 4cd473eeeb5d8..4e507600b8e0f 100644 --- a/pkg/security/resolvers/sbom/file_querier.go +++ b/pkg/security/resolvers/sbom/file_querier.go @@ -9,6 +9,8 @@ package sbom import ( + "cmp" + "slices" "strings" "github.com/DataDog/datadog-agent/pkg/security/seclog" @@ -44,16 +46,22 @@ func newFileQuerier(report *trivy.Report) fileQuerier { } } } + + slices.SortFunc(files, func(a, b fqEntry) int { + return cmp.Compare(a.hash, b.hash) + }) + return fileQuerier{files: files} } func (fq *fileQuerier) queryHash(hash uint64) *Package { - for _, entry := range fq.files { - if entry.hash == hash { - return entry.pkg - } + i, found := slices.BinarySearchFunc(fq.files, hash, func(entry fqEntry, hash uint64) int { + return cmp.Compare(entry.hash, hash) + }) + if !found { + return nil } - return nil + return fq.files[i].pkg } func (fq *fileQuerier) queryFile(path string) *Package {