From 873173da109b8618dc0512029d85c2d76579655d Mon Sep 17 00:00:00 2001 From: Rez Moss Date: Tue, 13 Jan 2026 16:28:32 -0500 Subject: [PATCH] qt bin classifier, fixed #4467 Signed-off-by: Rez Moss --- .../binary/classifier_cataloger_test.go | 33 ++++++++++++++++++ syft/pkg/cataloger/binary/classifiers.go | 13 +++++++ .../qt/4.8.7/linux-amd64/libQtCore.so | Bin 0 -> 150 bytes .../qt/5.15.2/linux-amd64/libQt5Core.so | Bin 0 -> 150 bytes .../qt/6.5.0/linux-amd64/libQt6Core.so | Bin 0 -> 150 bytes 5 files changed, 46 insertions(+) create mode 100644 syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/qt/4.8.7/linux-amd64/libQtCore.so create mode 100644 syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/qt/5.15.2/linux-amd64/libQt5Core.so create mode 100644 syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/qt/6.5.0/linux-amd64/libQt6Core.so diff --git a/syft/pkg/cataloger/binary/classifier_cataloger_test.go b/syft/pkg/cataloger/binary/classifier_cataloger_test.go index 4f839da2d..cfcb0af51 100644 --- a/syft/pkg/cataloger/binary/classifier_cataloger_test.go +++ b/syft/pkg/cataloger/binary/classifier_cataloger_test.go @@ -1216,6 +1216,39 @@ func Test_Cataloger_PositiveCases(t *testing.T) { Metadata: metadata("openssl-binary"), }, }, + { + logicalFixture: "qt/4.8.7/linux-amd64", + expected: pkg.Package{ + Name: "qt", + Version: "4.8.7", + Type: "binary", + PURL: "pkg:generic/qt@4.8.7", + Locations: locations("libQtCore.so"), + Metadata: metadata("qt-binary-lib"), + }, + }, + { + logicalFixture: "qt/5.15.2/linux-amd64", + expected: pkg.Package{ + Name: "qt", + Version: "5.15.2", + Type: "binary", + PURL: "pkg:generic/qt@5.15.2", + Locations: locations("libQt5Core.so"), + Metadata: metadata("qt-binary-lib"), + }, + }, + { + logicalFixture: "qt/6.5.0/linux-amd64", + expected: pkg.Package{ + Name: "qt", + Version: "6.5.0", + Type: "binary", + PURL: "pkg:generic/qt@6.5.0", + Locations: locations("libQt6Core.so"), + Metadata: metadata("qt-binary-lib"), + }, + }, { logicalFixture: "gcc/12.3.0/linux-amd64", expected: pkg.Package{ diff --git a/syft/pkg/cataloger/binary/classifiers.go b/syft/pkg/cataloger/binary/classifiers.go index 99a8aafc1..705097424 100644 --- a/syft/pkg/cataloger/binary/classifiers.go +++ b/syft/pkg/cataloger/binary/classifiers.go @@ -513,6 +513,19 @@ func DefaultClassifiers() []binutils.Classifier { PURL: mustPURL("pkg:generic/openssl@version"), CPEs: singleCPE("cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), }, + { + Class: "qt-binary-lib", + FileGlob: "**/libQt*Core.so*", + EvidenceMatcher: binutils.MatchAny( + // Qt 5.x and Qt 6.x pattern [NUL][NUL]Qt 6.5.0 (x86_64-little_endian-... + m.FileContentsVersionMatcher(`\x00\x00Qt (?P[0-9]+\.[0-9]+\.[0-9]+) \(`), + // Qt 4.x pattern QtCore lib ver 4.8.7 + m.FileContentsVersionMatcher(`QtCore library version (?P[0-9]+\.[0-9]+\.[0-9]+)`), + ), + Package: "qt", + PURL: mustPURL("pkg:generic/qt@version"), + CPEs: singleCPE("cpe:2.3:a:qt:qt:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), + }, { Class: "gcc-binary", FileGlob: "**/gcc", diff --git a/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/qt/4.8.7/linux-amd64/libQtCore.so b/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/qt/4.8.7/linux-amd64/libQtCore.so new file mode 100644 index 0000000000000000000000000000000000000000..ca19cc27e663049062919ad7a8f3b38bd771f3cf GIT binary patch literal 150 zcmW;Du?~VT6h>iYp5h-hgjNkk)6uRjCcFSbX>Y78mW!lsFEKgecVMfkZZIz1*L@5l z*`jD2&DdgR@L(O2fv0EcQpVS$nPNaAuHsVaIORmvF?M>7)8TkV`+uP0d+I{Qod>b8 iz+KM@j(Jj2uInm3EGSA(y$Le~E6eh>kRR|eSph#POE6~u literal 0 HcmV?d00001 diff --git a/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/qt/5.15.2/linux-amd64/libQt5Core.so b/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/qt/5.15.2/linux-amd64/libQt5Core.so new file mode 100644 index 0000000000000000000000000000000000000000..06a4ab18bd4bf83b9b921656bb33bb112bcad451 GIT binary patch literal 150 zcmWlSu?mAQ7=(S48{?1|t^O1`I<%{$yF~M20;w$~1%3O*Vu6DZ= zXNH7M)tzb}_A8Cl%HUH9Jo0M2S!MWAi|EY87Q!B@dHcD<#(_;_Og|s&4by>p-{+%? hs?q40bgK#CnVE+<1$mcLmf81mJ|Z_c#*q5Y#(!8#DjEO) literal 0 HcmV?d00001 diff --git a/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/qt/6.5.0/linux-amd64/libQt6Core.so b/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/qt/6.5.0/linux-amd64/libQt6Core.so new file mode 100644 index 0000000000000000000000000000000000000000..cc70364dce94c2b67a4506bc93579993a25c7f78 GIT binary patch literal 150 zcmXYou?oU45J3AWH?~7U5^E3~Gw51zFW2Uz2Qf-=iv4?w_;}mnq41kH3zZwr)chC( zyxwaA?dRY}->bwTiAKtiF{||SJ=6sYMQG!i@y>Gxg%V*Um|mRX5vCPRA%Hb{r!6?+ dtm&PD_OeZ9lz&jR>zd}eaD`1-2nGp{LSIBwE4=^! literal 0 HcmV?d00001