diff --git a/syft/pkg/cataloger/binary/classifier_cataloger_test.go b/syft/pkg/cataloger/binary/classifier_cataloger_test.go index d56878f7b..4f839da2d 100644 --- a/syft/pkg/cataloger/binary/classifier_cataloger_test.go +++ b/syft/pkg/cataloger/binary/classifier_cataloger_test.go @@ -227,6 +227,17 @@ func Test_Cataloger_PositiveCases(t *testing.T) { Metadata: metadata("traefik-binary"), }, }, + { + logicalFixture: "traefik/3.6.5/linux-amd64", + expected: pkg.Package{ + Name: "traefik", + Version: "3.6.5", + Type: "binary", + PURL: "pkg:generic/traefik@3.6.5", + Locations: locations("traefik"), + Metadata: metadata("traefik-binary"), + }, + }, { logicalFixture: "memcached/1.6.18/linux-amd64", expected: pkg.Package{ diff --git a/syft/pkg/cataloger/binary/classifiers.go b/syft/pkg/cataloger/binary/classifiers.go index 4e7c13ff7..99a8aafc1 100644 --- a/syft/pkg/cataloger/binary/classifiers.go +++ b/syft/pkg/cataloger/binary/classifiers.go @@ -224,7 +224,7 @@ func DefaultClassifiers() []binutils.Classifier { // [NUL]v1.7.34[NUL] // [NUL]2.9.6[NUL] // 3.0.4[NUL] - `(?m)(\x00|\x{FFFD})?v?(?P[0-9]+\.[0-9]+\.[0-9]+(-alpha[0-9]|-beta[0-9]|-rc[0-9])?)\x00`), + `(?m)(\x00v?|\x{FFFD}.?)(?P[0-9]+\.[0-9]+\.[0-9]+(-alpha[0-9]|-beta[0-9]|-rc[0-9])?)\x00`), Package: "traefik", PURL: mustPURL("pkg:generic/traefik@version"), CPEs: singleCPE("cpe:2.3:a:traefik:traefik:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), diff --git a/syft/pkg/cataloger/binary/test-fixtures/classifiers/negative/traefik/traefik b/syft/pkg/cataloger/binary/test-fixtures/classifiers/negative/traefik/traefik new file mode 100644 index 000000000..874b31c58 Binary files /dev/null and b/syft/pkg/cataloger/binary/test-fixtures/classifiers/negative/traefik/traefik differ diff --git a/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/traefik/3.6.5/linux-amd64/traefik b/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/traefik/3.6.5/linux-amd64/traefik new file mode 100644 index 000000000..0be4d2567 Binary files /dev/null and b/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/traefik/3.6.5/linux-amd64/traefik differ diff --git a/syft/pkg/cataloger/binary/test-fixtures/config.yaml b/syft/pkg/cataloger/binary/test-fixtures/config.yaml index a2c012f1b..a4a834f02 100644 --- a/syft/pkg/cataloger/binary/test-fixtures/config.yaml +++ b/syft/pkg/cataloger/binary/test-fixtures/config.yaml @@ -587,6 +587,13 @@ from-images: paths: - /usr/local/bin/traefik + - version: 3.6.5 + images: + - ref: traefik:v3.6.5@sha256:d944e3693bbf5a361ddd2e411bb713049cfb4f5ff3da200b30ee7a347dbd6abd + platform: linux/amd64 + paths: + - /usr/local/bin/traefik + # from the original dynamic fixtures... - name: python-rhel-shared-libs