diff --git a/internal/formats/common/cyclonedxhelpers/component.go b/internal/formats/common/cyclonedxhelpers/component.go index fd344c63ae0f..f82cdf73faa3 100644 --- a/internal/formats/common/cyclonedxhelpers/component.go +++ b/internal/formats/common/cyclonedxhelpers/component.go @@ -31,6 +31,15 @@ func decodeComponent(c *cyclonedx.Component) (*pkg.Package, error) { if err != nil { return nil, err } + + typ := pkg.Type(prop(c, "type")) + purl := c.PackageURL + if typ == "" { + if purl != "" { + typ = pkg.TypeFromPURL(purl) + } + } + p := &pkg.Package{ Name: c.Name, Version: c.Version, @@ -38,9 +47,9 @@ func decodeComponent(c *cyclonedx.Component) (*pkg.Package, error) { Locations: nil, Licenses: decodeLicenses(c), Language: pkg.Language(prop(c, "language")), - Type: pkg.Type(prop(c, "type")), + Type: pkg.Type(typ), CPEs: cp, - PURL: c.PackageURL, + PURL: purl, } metaType, meta, err := decodePackageMetadata(c)