From 051cefb9e771083152e7c35380873168ed3e3dc9 Mon Sep 17 00:00:00 2001 From: George Adams Date: Thu, 12 Sep 2024 13:51:13 +0100 Subject: [PATCH] Add Rakudo Star binaries cataloger Signed-off-by: George Adams --- .../binary/classifier_cataloger_test.go | 12 +++++++++++- syft/pkg/cataloger/binary/classifiers.go | 10 ++++++++++ .../rakudo-star/2024.08/linux-amd64/rakudo | Bin 0 -> 72080 bytes .../cataloger/binary/test-fixtures/config.yaml | 16 ++++++++++++++++ 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100755 syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/rakudo-star/2024.08/linux-amd64/rakudo diff --git a/syft/pkg/cataloger/binary/classifier_cataloger_test.go b/syft/pkg/cataloger/binary/classifier_cataloger_test.go index c1bfbb322f0..829a02ecfd6 100644 --- a/syft/pkg/cataloger/binary/classifier_cataloger_test.go +++ b/syft/pkg/cataloger/binary/classifier_cataloger_test.go @@ -392,7 +392,17 @@ func Test_Cataloger_PositiveCases(t *testing.T) { Metadata: metadata("helm"), }, }, - + { + logicalFixture: "rakudo-star/2024.08/linux-amd64", + expected: pkg.Package{ + Name: "rakudo/star", + Version: "2024.08", + Type: "binary", + PURL: "pkg:generic/rakudo/star@2024.08", + Locations: locations("rakudo-2024.08"), + Metadata: metadata("rakudo-star-binary"), + }, + }, { // note: dynamic (non-snippet) test case logicalFixture: "redis-server/2.8.23/linux-amd64", diff --git a/syft/pkg/cataloger/binary/classifiers.go b/syft/pkg/cataloger/binary/classifiers.go index 5290b4d984e..936b307dbeb 100644 --- a/syft/pkg/cataloger/binary/classifiers.go +++ b/syft/pkg/cataloger/binary/classifiers.go @@ -352,6 +352,16 @@ func DefaultClassifiers() []Classifier { PURL: mustPURL("pkg:generic/mariadb@version"), CPEs: singleCPE("cpe:2.3:a:mariadb:mariadb:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), }, + { + Class: "rakudo-star-binary", + FileGlob: "**/rakudo", + EvidenceMatcher: FileContentsVersionMatcher( + `(?m)Rakudo Star v(?P[0-9]+\.[0-9]+)`, + ), + Package: "rakudo/star", + PURL: mustPURL("pkg:generic/rakudo/star@version"), + CPEs: singleCPE("cpe:2.3:a:rakudo:star:*:*:*:*:*:*:*:*"), + }, { Class: "rust-standard-library-linux", FileGlob: "**/libstd-????????????????.so", diff --git a/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/rakudo-star/2024.08/linux-amd64/rakudo b/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/rakudo-star/2024.08/linux-amd64/rakudo new file mode 100755 index 0000000000000000000000000000000000000000..298ba8a7e31b0e08423287028c1143d73cbd51dd GIT binary patch literal 72080 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 PNAthRiO=Rg+y8$6$z)NH literal 0 HcmV?d00001 diff --git a/syft/pkg/cataloger/binary/test-fixtures/config.yaml b/syft/pkg/cataloger/binary/test-fixtures/config.yaml index 58408325be8..888b46900ae 100644 --- a/syft/pkg/cataloger/binary/test-fixtures/config.yaml +++ b/syft/pkg/cataloger/binary/test-fixtures/config.yaml @@ -375,6 +375,22 @@ from-images: paths: - /opt/pypy/bin/libpypy3.9-c.so + - name: rakudo-star + version: 2024.08 + images: + - ref: rakudo-star:2024.08@sha256:71c8e816b299bbccf0d8df8c77b5aa39ad6d4495f368304ddf7b2bca888818f8 + platform: linux/amd64 + paths: + - /usr/bin/rakudo + + - name: rakudo-star + version: 2024.08-alpine + images: + - ref: rakudo-star:2024.08-alpine@sha256:1cb1b203f0800f60f93a3221f2e02b8797094e1aed1fad3bc957fe4fc50fe9c6 + platform: linux/amd64 + paths: + - /usr/bin/rakudo + - version: 2.8.23 images: - ref: redis:2.8.23@sha256:e507029ca6a11b85f8628ff16d7ff73ae54582f16fd757e64431f5ca6d27a13c