diff --git a/syft/pkg/cataloger/binary/classifier_cataloger_test.go b/syft/pkg/cataloger/binary/classifier_cataloger_test.go index 2c847837a..95b8487ea 100644 --- a/syft/pkg/cataloger/binary/classifier_cataloger_test.go +++ b/syft/pkg/cataloger/binary/classifier_cataloger_test.go @@ -1188,6 +1188,17 @@ func Test_Cataloger_PositiveCases(t *testing.T) { Metadata: metadata("erlang-alpine-binary"), }, }, + { + logicalFixture: "erlang/17.5.6.9/linux-amd64", + expected: pkg.Package{ + Name: "erlang", + Version: "17.5.6.9", + Type: "binary", + PURL: "pkg:generic/erlang@17.5.6.9", + Locations: locations("beam.smp"), + Metadata: metadata("erlang-alpine-binary"), + }, + }, { logicalFixture: "swipl/9.3.8/linux-amd64", expected: pkg.Package{ diff --git a/syft/pkg/cataloger/binary/classifiers.go b/syft/pkg/cataloger/binary/classifiers.go index e9692b3cb..53f902c0d 100644 --- a/syft/pkg/cataloger/binary/classifiers.go +++ b/syft/pkg/cataloger/binary/classifiers.go @@ -374,6 +374,10 @@ func DefaultClassifiers() []binutils.Classifier { // [NUL][NUL]26.1.2[NUL][NUL][NUL][NUL][NUL][NUL][NUL]NUL[NUL][NUL]Erlang/OTP `\x00+(?P[0-9]+\.[0-9]+(\.[0-9]+){0,2}(-rc[0-9])?)\x00+Erlang/OTP`, ), + m.FileContentsVersionMatcher( + // Erlang/OTP 17%s [erts-6.4.1.6] [source] [64-bit] [smp:%beu:%beu] [async-threads:%d] [hipe] [kernel-poll:%s][NUL]17.5.6.9[NUL][NUL][NUL] + `(?s)Erlang/OTP.{1,150}\x00+(?P[0-9]+\.[0-9]+(\.[0-9]+){0,2}(-rc[0-9])?)\x00+`, + ), ), Package: "erlang", PURL: mustPURL("pkg:generic/erlang@version"), diff --git a/syft/pkg/cataloger/binary/testdata/classifiers/snippets/erlang/17.5.6.9/linux-amd64/beam.smp b/syft/pkg/cataloger/binary/testdata/classifiers/snippets/erlang/17.5.6.9/linux-amd64/beam.smp new file mode 100644 index 000000000..70ecff55f Binary files /dev/null and b/syft/pkg/cataloger/binary/testdata/classifiers/snippets/erlang/17.5.6.9/linux-amd64/beam.smp differ diff --git a/syft/pkg/cataloger/binary/testdata/config.yaml b/syft/pkg/cataloger/binary/testdata/config.yaml index 54dfaca3d..1f363bca8 100644 --- a/syft/pkg/cataloger/binary/testdata/config.yaml +++ b/syft/pkg/cataloger/binary/testdata/config.yaml @@ -79,6 +79,14 @@ from-images: paths: - /usr/local/lib/erlang/erts-14.1.1/bin/beam.smp + - name: erlang + version: 17.5.6.9 + images: + - ref: erlang:17.5.6.9@sha256:b4c39d943dfbe0351db06ac50097e4981dce4e3a01c66a1e6a19e6865e6fcb20 + platform: linux/amd64 + paths: + - /usr/local/lib/erlang/erts-6.4.1.6/bin/beam.smp + - version: 9.3.8 images: - ref: swipl:9.3.8@sha256:6a15e6a03afe943228924a5502ba763e653ff28d9b3391e2b3e1fc3e991f37d4