-
Notifications
You must be signed in to change notification settings - Fork 518
/
vulnerability_metadata.go
57 lines (51 loc) · 1.23 KB
/
vulnerability_metadata.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package models
import "github.com/anchore/grype/grype/vulnerability"
type VulnerabilityMetadata struct {
ID string `json:"id"`
DataSource string `json:"dataSource"`
Namespace string `json:"namespace,omitempty"`
Severity string `json:"severity,omitempty"`
URLs []string `json:"urls"`
Description string `json:"description,omitempty"`
Cvss []Cvss `json:"cvss"`
}
func NewVulnerabilityMetadata(id, namespace string, metadata *vulnerability.Metadata) VulnerabilityMetadata {
if metadata == nil {
return VulnerabilityMetadata{
ID: id,
Namespace: namespace,
}
}
urls := metadata.URLs
if urls == nil {
urls = make([]string, 0)
}
return VulnerabilityMetadata{
ID: id,
DataSource: metadata.DataSource,
Namespace: metadata.Namespace,
Severity: metadata.Severity,
URLs: urls,
Description: metadata.Description,
Cvss: NewCVSS(metadata),
}
}
// returns severtiy score for presenter sorting purposes
func SeverityScore(severtiy string) int {
switch severtiy {
case "Unknown":
return 0
case "Negligible":
return 1
case "Low":
return 2
case "Medium":
return 3
case "High":
return 4
case "Critical":
return 5
default:
return 0
}
}