diff --git a/syft/pkg/cataloger/binary/cataloger_test.go b/syft/pkg/cataloger/binary/cataloger_test.go index c3af3bfcf67..46c4d40e385 100644 --- a/syft/pkg/cataloger/binary/cataloger_test.go +++ b/syft/pkg/cataloger/binary/cataloger_test.go @@ -19,6 +19,34 @@ func TestClassifierCataloger_DefaultClassifiers_PositiveCases(t *testing.T) { fixtureDir string expected pkg.Package }{ + { + name: "positive-traefik-2.9.6", + fixtureDir: "test-fixtures/classifiers/positive/traefik-2.9.6", + expected: pkg.Package{ + Name: "traefik", + Version: "2.9.6", + Type: "binary", + PURL: "pkg:generic/traefik@2.9.6", + Locations: singleLocation("traefik"), + Metadata: pkg.BinaryMetadata{ + Classifier: "traefik-binary", + }, + }, + }, + { + name: "positive-traefik-1.7.34", + fixtureDir: "test-fixtures/classifiers/positive/traefik-1.7.34", + expected: pkg.Package{ + Name: "traefik", + Version: "1.7.34", + Type: "binary", + PURL: "pkg:generic/traefik@1.7.34", + Locations: singleLocation("traefik"), + Metadata: pkg.BinaryMetadata{ + Classifier: "traefik-binary", + }, + }, + }, { name: "positive-memcached-1.6.18", fixtureDir: "test-fixtures/classifiers/positive/memcached-1.6.18", diff --git a/syft/pkg/cataloger/binary/default_classifiers.go b/syft/pkg/cataloger/binary/default_classifiers.go index 114d9295b40..f9d3334386a 100644 --- a/syft/pkg/cataloger/binary/default_classifiers.go +++ b/syft/pkg/cataloger/binary/default_classifiers.go @@ -165,4 +165,14 @@ var defaultClassifiers = []classifier{ Package: "memcached", PURL: mustPURL("pkg:generic/memcached@version"), }, + { + Class: "traefik-binary", + FileGlob: "**/traefik", + EvidenceMatcher: fileContentsVersionMatcher( + // [NUL]v1.7.34[NUL] + // [NUL]2.9.6[NUL] + `(?m)\x00v?(?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"), + }, } diff --git a/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/traefik-1.7.34/traefik b/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/traefik-1.7.34/traefik new file mode 100644 index 00000000000..12602288d82 Binary files /dev/null and b/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/traefik-1.7.34/traefik differ diff --git a/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/traefik-2.9.6/traefik b/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/traefik-2.9.6/traefik new file mode 100644 index 00000000000..f5b1dc0ccff Binary files /dev/null and b/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/traefik-2.9.6/traefik differ