diff --git a/syft/pkg/cataloger/binary/cataloger_test.go b/syft/pkg/cataloger/binary/cataloger_test.go index 77d727c25..086807cf4 100644 --- a/syft/pkg/cataloger/binary/cataloger_test.go +++ b/syft/pkg/cataloger/binary/cataloger_test.go @@ -312,6 +312,42 @@ func Test_Cataloger_DefaultClassifiers_PositiveCases(t *testing.T) { Metadata: metadata("redis-binary"), }, }, + { + name: "positive-redis-7.0.14", + fixtureDir: "test-fixtures/classifiers/positive/redis-server-7.0.14", + expected: pkg.Package{ + Name: "redis", + Version: "7.0.14", + Type: "binary", + PURL: "pkg:generic/redis@7.0.14", + Locations: locations("redis-server"), + Metadata: metadata("redis-binary"), + }, + }, + { + name: "positive-redis-7.2.3-amd64", + fixtureDir: "test-fixtures/classifiers/positive/redis-server-7.2.3-amd64", + expected: pkg.Package{ + Name: "redis", + Version: "7.2.3", + Type: "binary", + PURL: "pkg:generic/redis@7.2.3", + Locations: locations("redis-server"), + Metadata: metadata("redis-binary"), + }, + }, + { + name: "positive-redis-7.2.3-arm64", + fixtureDir: "test-fixtures/classifiers/positive/redis-server-7.2.3-arm64", + expected: pkg.Package{ + Name: "redis", + Version: "7.2.3", + Type: "binary", + PURL: "pkg:generic/redis@7.2.3", + Locations: locations("redis-server"), + Metadata: metadata("redis-binary"), + }, + }, { name: "positive-libpython3.7.so", fixtureDir: "test-fixtures/classifiers/positive/python-binary-lib-3.7", diff --git a/syft/pkg/cataloger/binary/default_classifiers.go b/syft/pkg/cataloger/binary/default_classifiers.go index 24cb43219..9b4b2dc2c 100644 --- a/syft/pkg/cataloger/binary/default_classifiers.go +++ b/syft/pkg/cataloger/binary/default_classifiers.go @@ -58,8 +58,10 @@ var defaultClassifiers = []classifier{ { Class: "redis-binary", FileGlob: "**/redis-server", - EvidenceMatcher: fileContentsVersionMatcher( - `(?s)payload %5.*(?P\d.\d\.\d\d*?)[a-z0-9]{12}-[0-9]{19}`), + EvidenceMatcher: evidenceMatchers( + fileContentsVersionMatcher(`(?s)payload %5.*?(?P\d.\d\.\d\d*)[a-z0-9]{12,15}-[0-9]{19}`), + fileContentsVersionMatcher(`(?s)\x00(?P\d.\d\.\d\d*)[a-z0-9]{12}-[0-9]{19}\x00.*?payload %5`), + ), Package: "redis", PURL: mustPURL("pkg:generic/redis@version"), CPEs: singleCPE("cpe:2.3:a:redislabs:redis:*:*:*:*:*:*:*:*"), diff --git a/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/redis-server-7.0.14/redis-server b/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/redis-server-7.0.14/redis-server new file mode 100755 index 000000000..68dae86a9 Binary files /dev/null and b/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/redis-server-7.0.14/redis-server differ diff --git a/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/redis-server-7.2.3-amd64/redis-server b/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/redis-server-7.2.3-amd64/redis-server new file mode 100755 index 000000000..6e192a3d4 Binary files /dev/null and b/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/redis-server-7.2.3-amd64/redis-server differ diff --git a/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/redis-server-7.2.3-arm64/redis-server b/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/redis-server-7.2.3-arm64/redis-server new file mode 100755 index 000000000..15ad151ac Binary files /dev/null and b/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/redis-server-7.2.3-arm64/redis-server differ