Skip to content

Commit 393bfdc

Browse files
authored
fix(sbom): use PURL or Group and Name in case of Java (#5154)
1 parent 76eb8a5 commit 393bfdc

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

pkg/sbom/cyclonedx/unmarshal.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ func toPackage(component cdx.Component) (bool, ftypes.TargetType, *ftypes.Packag
345345
pkg := p.Package()
346346
// Trivy's marshall loses case-sensitivity in PURL used in SBOM for packages (Go, Npm, PyPI),
347347
// so we have to use an original package name
348-
pkg.Name = getPackageName(p.Type, component)
348+
pkg.Name = getPackageName(p.Type, pkg.Name, component)
349349
pkg.Ref = component.BOMRef
350350

351351
for _, license := range lo.FromPtr(component.Licenses) {
@@ -407,10 +407,15 @@ func toTrivyCdxComponent(component cdx.Component) ftypes.Component {
407407
}
408408
}
409409

410-
func getPackageName(typ string, component cdx.Component) string {
411-
// Jar uses `Group` field for `GroupID`
412-
if typ == packageurl.TypeMaven && component.Group != "" {
413-
return fmt.Sprintf("%s:%s", component.Group, component.Name)
410+
func getPackageName(typ, pkgNameFromPurl string, component cdx.Component) string {
411+
if typ == packageurl.TypeMaven {
412+
// Jar uses `Group` field for `GroupID`
413+
if component.Group != "" {
414+
return fmt.Sprintf("%s:%s", component.Group, component.Name)
415+
} else {
416+
// use name derived from purl if `Group` doesn't exist
417+
return pkgNameFromPurl
418+
}
414419
}
415420
return component.Name
416421
}

0 commit comments

Comments
 (0)