mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 16:33:21 +01:00
ensure java parent pkg ref isnt nil when looking for parent matches
Signed-off-by: Alex Goodman <alex.goodman@anchore.com>
This commit is contained in:
parent
ae7cd6bbb7
commit
bb1facbf81
@ -184,7 +184,7 @@ func (j *archiveParser) discoverPkgsFromPomProperties(parentPkg *pkg.Package) ([
|
|||||||
|
|
||||||
// keep the artifact name within the virtual path if this package does not match the parent package
|
// keep the artifact name within the virtual path if this package does not match the parent package
|
||||||
vPathSuffix := ""
|
vPathSuffix := ""
|
||||||
if !strings.HasPrefix(propsObj.ArtifactID, parentPkg.Name) {
|
if parentPkg != nil && !strings.HasPrefix(propsObj.ArtifactID, parentPkg.Name) {
|
||||||
vPathSuffix += ":" + propsObj.ArtifactID
|
vPathSuffix += ":" + propsObj.ArtifactID
|
||||||
}
|
}
|
||||||
virtualPath := j.virtualPath + vPathSuffix
|
virtualPath := j.virtualPath + vPathSuffix
|
||||||
@ -208,30 +208,34 @@ func (j *archiveParser) discoverPkgsFromPomProperties(parentPkg *pkg.Package) ([
|
|||||||
// the name/version pair matches...
|
// the name/version pair matches...
|
||||||
matchesParentPkg := pkgKey == parentKey
|
matchesParentPkg := pkgKey == parentKey
|
||||||
|
|
||||||
// the virtual path matches...
|
if parentPkg != nil {
|
||||||
matchesParentPkg = matchesParentPkg || parentPkg.Metadata.(pkg.JavaMetadata).VirtualPath == virtualPath
|
// the virtual path matches...
|
||||||
|
matchesParentPkg = matchesParentPkg || parentPkg.Metadata.(pkg.JavaMetadata).VirtualPath == virtualPath
|
||||||
|
|
||||||
// the pom artifactId has the parent name or vice versa
|
// the pom artifactId has the parent name or vice versa
|
||||||
if propsObj.ArtifactID != "" {
|
if propsObj.ArtifactID != "" {
|
||||||
matchesParentPkg = matchesParentPkg || strings.Contains(parentPkg.Name, propsObj.ArtifactID) || strings.Contains(propsObj.ArtifactID, parentPkg.Name)
|
matchesParentPkg = matchesParentPkg || strings.Contains(parentPkg.Name, propsObj.ArtifactID) || strings.Contains(propsObj.ArtifactID, parentPkg.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
if matchesParentPkg {
|
||||||
|
// we've run across more information about our parent package, add this info to the parent package metadata
|
||||||
|
// the pom properties is typically a better source of information for name and version than the manifest
|
||||||
|
if p.Name != parentPkg.Name {
|
||||||
|
parentPkg.Name = p.Name
|
||||||
|
}
|
||||||
|
if p.Version != parentPkg.Version {
|
||||||
|
parentPkg.Version = p.Version
|
||||||
|
}
|
||||||
|
|
||||||
|
parentMetadata, ok := parentPkg.Metadata.(pkg.JavaMetadata)
|
||||||
|
if ok {
|
||||||
|
parentMetadata.PomProperties = propsObj
|
||||||
|
parentPkg.Metadata = parentMetadata
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if matchesParentPkg {
|
if !matchesParentPkg && !j.discoveredPkgs.Contains(pkgKey) {
|
||||||
// we've run across more information about our parent package, add this info to the parent package metadata
|
|
||||||
// the pom properties is typically a better source of information for name and version than the manifest
|
|
||||||
if p.Name != parentPkg.Name {
|
|
||||||
parentPkg.Name = p.Name
|
|
||||||
}
|
|
||||||
if p.Version != parentPkg.Version {
|
|
||||||
parentPkg.Version = p.Version
|
|
||||||
}
|
|
||||||
|
|
||||||
parentMetadata, ok := parentPkg.Metadata.(pkg.JavaMetadata)
|
|
||||||
if ok {
|
|
||||||
parentMetadata.PomProperties = propsObj
|
|
||||||
parentPkg.Metadata = parentMetadata
|
|
||||||
}
|
|
||||||
} else if !j.discoveredPkgs.Contains(pkgKey) {
|
|
||||||
// only keep packages we haven't seen yet (and are not related to the parent package)
|
// only keep packages we haven't seen yet (and are not related to the parent package)
|
||||||
pkgs = append(pkgs, p)
|
pkgs = append(pkgs, p)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user