mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 08:23:15 +01:00
fix: return empty string if dereferncing pom var fails (#2797)
Previously, Syft would attempt to dereference pom variables, but if it
detected a cycle or failed to get back to a non-variable value, it would
return the last variable. Instead, return an empty string. Otherwise,
certain jars will have versions like "${project.version}" in the SBOM,
which is not helpful.
Signed-off-by: Will Murphy <will.murphy@anchore.com>
This commit is contained in:
parent
f2633800ce
commit
6440f26b5a
@ -236,7 +236,11 @@ func resolveProperty(pom gopom.Project, property *string, propertyName string) s
|
|||||||
seenBeforePropertyNames := map[string]struct{}{
|
seenBeforePropertyNames := map[string]struct{}{
|
||||||
propertyName: {},
|
propertyName: {},
|
||||||
}
|
}
|
||||||
return recursiveResolveProperty(pom, propertyCase, seenBeforePropertyNames)
|
result := recursiveResolveProperty(pom, propertyCase, seenBeforePropertyNames)
|
||||||
|
if propertyMatcher.MatchString(result) {
|
||||||
|
return "" // dereferencing variable failed; fall back to empty string
|
||||||
|
}
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
//nolint:gocognit
|
//nolint:gocognit
|
||||||
|
|||||||
@ -502,7 +502,7 @@ func Test_resolveProperty(t *testing.T) {
|
|||||||
pom: gopom.Project{
|
pom: gopom.Project{
|
||||||
Parent: nil,
|
Parent: nil,
|
||||||
},
|
},
|
||||||
expected: "${project.parent.groupId}",
|
expected: "",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "nil string pointer halts search",
|
name: "nil string pointer halts search",
|
||||||
@ -512,7 +512,7 @@ func Test_resolveProperty(t *testing.T) {
|
|||||||
GroupID: nil,
|
GroupID: nil,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expected: "${project.parent.groupId}",
|
expected: "",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "double dereference",
|
name: "double dereference",
|
||||||
@ -537,7 +537,7 @@ func Test_resolveProperty(t *testing.T) {
|
|||||||
Version: stringPointer("1.2.3"),
|
Version: stringPointer("1.2.3"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expected: "${springboot.version}",
|
expected: "",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "resolution halts even if it resolves to a variable",
|
name: "resolution halts even if it resolves to a variable",
|
||||||
@ -552,7 +552,7 @@ func Test_resolveProperty(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expected: "${undefined.version}",
|
expected: "",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "resolution halts even if cyclic",
|
name: "resolution halts even if cyclic",
|
||||||
@ -564,7 +564,7 @@ func Test_resolveProperty(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expected: "${springboot.version}",
|
expected: "",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "resolution halts even if cyclic more steps",
|
name: "resolution halts even if cyclic more steps",
|
||||||
@ -578,21 +578,24 @@ func Test_resolveProperty(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expected: "${cyclic.version}",
|
expected: "",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "resolution halts even if cyclic involving parent",
|
name: "resolution halts even if cyclic involving parent",
|
||||||
property: "${cyclic.version}",
|
property: "${cyclic.version}",
|
||||||
pom: gopom.Project{
|
pom: gopom.Project{
|
||||||
|
Parent: &gopom.Parent{
|
||||||
|
Version: stringPointer("${cyclic.version}"),
|
||||||
|
},
|
||||||
Properties: &gopom.Properties{
|
Properties: &gopom.Properties{
|
||||||
Entries: map[string]string{
|
Entries: map[string]string{
|
||||||
"other.version": "${cyclic.version}",
|
"other.version": "${parent.version}",
|
||||||
"springboot.version": "${other.version}",
|
"springboot.version": "${other.version}",
|
||||||
"cyclic.version": "${springboot.version}",
|
"cyclic.version": "${springboot.version}",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expected: "${cyclic.version}",
|
expected: "",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user