Skip to content

Commit d919ec1

Browse files
committed
feat: Add PURL field to vulnerability report
Signed-off-by: Gorkem Mulayim <gorkemmulayim@icloud.com>
1 parent 7af8c0a commit d919ec1

File tree

4 files changed

+18
-0
lines changed

4 files changed

+18
-0
lines changed

pkg/harbor/model.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ type VulnerabilityItem struct {
155155
Pkg string `json:"package"`
156156
Version string `json:"version"`
157157
Status string `json:"status,omitempty"`
158+
PURL string `json:"purl,omitempty"`
158159
FixVersion string `json:"fix_version,omitempty"`
159160
Severity Severity `json:"severity"`
160161
Description string `json:"description"`

pkg/scan/transformer.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ func (t *transformer) transformVulnerabilities(source []trivy.Vulnerability) []h
7171
Pkg: v.PkgName,
7272
Version: v.InstalledVersion,
7373
Status: v.Status,
74+
PURL: t.toPURL(v.PkgIdentifier),
7475
FixVersion: v.FixedVersion,
7576
Severity: t.toHarborSeverity(v.Severity),
7677
Description: v.Description,
@@ -111,6 +112,13 @@ func (t *transformer) toHarborLayer(tLayer *trivy.Layer) (hLayer *harbor.Layer)
111112
return
112113
}
113114

115+
func (t *transformer) toPURL(pkgIdentifier *trivy.PkgIdentifier) string {
116+
if pkgIdentifier == nil {
117+
return ""
118+
}
119+
return pkgIdentifier.PURL
120+
}
121+
114122
func (t *transformer) toHarborSeverity(severity string) harbor.Severity {
115123
harborSev, ok := trivyToHarborSeverityMap[severity]
116124
if !ok {

pkg/scan/transformer_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ func TestTransformer_Transform(t *testing.T) {
4343
{
4444
VulnerabilityID: "CVE-0000-0001",
4545
PkgName: "PKG-01",
46+
PkgIdentifier: &trivy.PkgIdentifier{
47+
PURL: "pkg:deb/debian/pkg-01@1.0.0?arch=amd64&distro=debian-12",
48+
},
4649
InstalledVersion: "PKG-01-VER",
4750
FixedVersion: "PKG-01-FIX-VER",
4851
Status: "fixed",
@@ -149,6 +152,7 @@ func TestTransformer_Transform(t *testing.T) {
149152
Pkg: "PKG-01",
150153
Version: "PKG-01-VER",
151154
Status: "fixed",
155+
PURL: "pkg:deb/debian/pkg-01@1.0.0?arch=amd64&distro=debian-12",
152156
FixVersion: "PKG-01-FIX-VER",
153157
Severity: harbor.SevCritical,
154158
Description: "CVE-0000-0001.DESC",

pkg/trivy/model.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ type Layer struct {
3232
DiffID string `json:"DiffID"`
3333
}
3434

35+
type PkgIdentifier struct {
36+
PURL string `json:"PURL"`
37+
}
38+
3539
type CVSSInfo struct {
3640
V2Vector string `json:"V2Vector,omitempty"`
3741
V3Vector string `json:"V3Vector,omitempty"`
@@ -47,6 +51,7 @@ type Report struct {
4751
type Vulnerability struct {
4852
VulnerabilityID string `json:"VulnerabilityID"`
4953
PkgName string `json:"PkgName"`
54+
PkgIdentifier *PkgIdentifier `json:"PkgIdentifier"`
5055
InstalledVersion string `json:"InstalledVersion"`
5156
Status string `json:"Status"`
5257
FixedVersion string `json:"FixedVersion"`

0 commit comments

Comments
 (0)