-
Notifications
You must be signed in to change notification settings - Fork 182
Expand file tree
/
Copy pathvulnerability.go
More file actions
43 lines (37 loc) · 1 KB
/
vulnerability.go
File metadata and controls
43 lines (37 loc) · 1 KB
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
package db
import (
"encoding/json"
"github.com/samber/oops"
bolt "go.etcd.io/bbolt"
"github.com/aquasecurity/trivy-db/pkg/types"
)
const (
vulnerabilityBucket = "vulnerability"
)
func (dbc Config) PutVulnerability(tx *bolt.Tx, cveID string, vuln types.Vulnerability) error {
if err := dbc.put(tx, []string{vulnerabilityBucket}, cveID, vuln); err != nil {
return oops.With("vuln_id", cveID).Wrapf(err, "failed to put severity")
}
return nil
}
func (dbc Config) GetVulnerability(cveID string) (vuln types.Vulnerability, err error) {
eb := oops.With("vuln_id", cveID)
err = db.View(func(tx *bolt.Tx) error {
bucket := tx.Bucket([]byte(vulnerabilityBucket))
if bucket == nil {
return nil
}
value := bucket.Get([]byte(cveID))
if value == nil {
return nil
}
if err = json.Unmarshal(value, &vuln); err != nil {
return eb.Wrapf(err, "json unmarshal error")
}
return nil
})
if err != nil {
return types.Vulnerability{}, eb.Wrapf(err, "failed to get vulnerability")
}
return vuln, nil
}