diff --git a/syft/pkg/cataloger/binary/classifier_cataloger_test.go b/syft/pkg/cataloger/binary/classifier_cataloger_test.go index 22f59b1b39e..48744a612d7 100644 --- a/syft/pkg/cataloger/binary/classifier_cataloger_test.go +++ b/syft/pkg/cataloger/binary/classifier_cataloger_test.go @@ -961,6 +961,28 @@ func Test_Cataloger_PositiveCases(t *testing.T) { Metadata: metadata("swipl-binary"), }, }, + { + logicalFixture: "dart/3.5.2/linux-amd64", + expected: pkg.Package{ + Name: "dart", + Version: "3.5.2", + Type: "binary", + PURL: "pkg:generic/dart@3.5.2", + Locations: locations("dart"), + Metadata: metadata("dart-binary"), + }, + }, + { + logicalFixture: "dart/3.6.0-216.1.beta/linux-amd64", + expected: pkg.Package{ + Name: "dart", + Version: "3.6.0-216.1.beta", + Type: "binary", + PURL: "pkg:generic/dart@3.6.0-216.1.beta", + Locations: locations("dart"), + Metadata: metadata("dart-binary"), + }, + }, { logicalFixture: "haskell-ghc/9.6.5/linux-amd64", expected: pkg.Package{ diff --git a/syft/pkg/cataloger/binary/classifiers.go b/syft/pkg/cataloger/binary/classifiers.go index 0a2a1a9b856..52dc1549a8b 100644 --- a/syft/pkg/cataloger/binary/classifiers.go +++ b/syft/pkg/cataloger/binary/classifiers.go @@ -447,6 +447,16 @@ func DefaultClassifiers() []Classifier { PURL: mustPURL("pkg:generic/swipl@version"), CPEs: singleCPE("cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), }, + { + Class: "dart-binary", + FileGlob: "**/dart", + EvidenceMatcher: FileContentsVersionMatcher( + `(?m)Dart,GC"\x00(?P[0-9]+\.[0-9]+\.[0-9]+(-[0-9]+(\.[0-9]+)?\.beta)?) `, + ), + Package: "dart", + PURL: mustPURL("pkg:generic/dart@version"), + CPEs: singleCPE("cpe:2.3:a:dart:dart_software_development_kit:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), + }, { Class: "haskell-ghc-binary", FileGlob: "**/ghc*", diff --git a/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/dart/3.5.2/linux-amd64/dart b/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/dart/3.5.2/linux-amd64/dart new file mode 100644 index 00000000000..226f7c3c4b3 Binary files /dev/null and b/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/dart/3.5.2/linux-amd64/dart differ diff --git a/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/dart/3.6.0-216.1.beta/linux-amd64/dart b/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/dart/3.6.0-216.1.beta/linux-amd64/dart new file mode 100644 index 00000000000..7a4f9a5d0b3 Binary files /dev/null and b/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/dart/3.6.0-216.1.beta/linux-amd64/dart differ diff --git a/syft/pkg/cataloger/binary/test-fixtures/config.yaml b/syft/pkg/cataloger/binary/test-fixtures/config.yaml index 51607b51a96..f32705f2a38 100644 --- a/syft/pkg/cataloger/binary/test-fixtures/config.yaml +++ b/syft/pkg/cataloger/binary/test-fixtures/config.yaml @@ -78,6 +78,20 @@ from-images: paths: - /usr/lib/swipl/bin/x86_64-linux/swipl + - version: 3.5.2 + images: + - ref: dart:3.5.2@sha256:1fd62cb5036bdc42de89bdae747683277986639be9b0b0a0751d2c50bbd9441f + platform: linux/amd64 + paths: + - /usr/lib/dart/bin/dart + + - version: 3.6.0-216.1.beta + images: + - ref: dart:3.6.0-216.1.beta@sha256:f4211fec53f972987f5bc1dd0ffd3d3cb1fd820ac1ade4e45a7a0c7bffd71d58 + platform: linux/amd64 + paths: + - /usr/lib/dart/bin/dart + - name: haskell-ghc version: 9.6.5 images: