in internal/vulnerability/events_creator.go [416:447]
func getCVSSValue[T comparable](vul trivyTypes.DetectedVulnerability, value func(cvss dbTypes.CVSS) T, zeroVal T) T {
// Get all the sources
sources := slices.Collect(maps.Keys(vul.CVSS))
if len(sources) == 0 {
return zeroVal
}
// Detect the data source
var source dbTypes.SourceID
if vul.DataSource != nil {
source = vul.DataSource.ID
}
// Attempt to pull detected data source
if cvss, ok := vul.CVSS[source]; ok {
return value(cvss)
}
// Try NVD as a fallback if it exists
if cvss, ok := vul.CVSS[trivyVul.NVD]; ok {
return value(cvss)
}
// Attempt to pull any other data source
for _, s := range sources {
if cvss, ok := vul.CVSS[s]; ok {
return value(cvss)
}
}
return zeroVal
}