internal/worker: pass CVE states to Run
Rather than just reading the set of CVEs that have been triaged from
triaged-cve-list, a map is now passed to Run containing the state of
those CVEs.
Change-Id: I9926c75c17662e4fdb602b315c7ff170e4564f5b
Reviewed-on: https://go-review.googlesource.com/c/vuln/+/362236
Trust: Julie Qiu <julie@golang.org>
Run-TryBot: Julie Qiu <julie@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/cmd/cvetriage/main.go b/cmd/cvetriage/main.go
index 89530c3..152e7a2 100644
--- a/cmd/cvetriage/main.go
+++ b/cmd/cvetriage/main.go
@@ -58,9 +58,9 @@
statusTriaged = "triaged"
)
-func readTriagedCVEList() (_ map[string]bool, err error) {
+func readTriagedCVEList() (_ map[string]string, err error) {
defer derrors.Wrap(&err, "readTriagedCVEList()")
- triaged := map[string]bool{}
+ triaged := map[string]string{}
lines, err := internal.ReadFileLines(triagedCVEList)
if err != nil {
return nil, err
@@ -71,20 +71,20 @@
return nil, fmt.Errorf("unexpected syntax: %q", l)
}
var (
- cveID = vuln[0]
- status = vuln[1]
+ cveID = vuln[0]
+ state = vuln[1]
)
- if status != statusFalsePositive && status != statusTriaged {
+ if state != statusFalsePositive && state != statusTriaged {
return nil, fmt.Errorf("unexpected syntax: %q", l)
}
- if status == statusTriaged {
+ if state == statusTriaged {
if len(vuln) != 3 {
return nil, fmt.Errorf("unexpected syntax: %q", l)
}
- triaged[cveID] = true
+ triaged[cveID] = state
}
- if status == statusFalsePositive {
- triaged[cveID] = true
+ if state == statusFalsePositive {
+ triaged[cveID] = state
}
}
return triaged, nil
diff --git a/internal/worker/worker.go b/internal/worker/worker.go
index 1c7957a..fca2e81 100644
--- a/internal/worker/worker.go
+++ b/internal/worker/worker.go
@@ -25,7 +25,7 @@
// Run clones the CVEProject/cvelist repository and compares the files to the
// existing triaged-cve-list.
-func Run(dirpath string, triaged map[string]bool) (err error) {
+func Run(dirpath string, triaged map[string]string) (err error) {
defer derrors.Wrap(&err, "Run(triaged)")
var repo *git.Repository
if dirpath != "" {
@@ -50,7 +50,7 @@
// team.
// TODO: Create GitHub issues. At the moment, this just prints the number of
// issues to be created.
-func createIssuesToTriage(r *git.Repository, t *object.Tree, triaged map[string]bool) (err error) {
+func createIssuesToTriage(r *git.Repository, t *object.Tree, triaged map[string]string) (err error) {
defer derrors.Wrap(&err, "createIssuesToTriage(r, t, triaged)")
log.Printf("Finding new Go vulnerabilities from CVE list...")
cves, issues, err := walkRepo(r, t, "", triaged)
@@ -73,7 +73,7 @@
// walkRepo looks at the files in t, recursively, and check if it is a CVE that
// needs to be manually triaged.
-func walkRepo(r *git.Repository, t *object.Tree, dirpath string, triaged map[string]bool) (newCVEs map[string]bool, newIssues []*GoVulnIssue, err error) {
+func walkRepo(r *git.Repository, t *object.Tree, dirpath string, triaged map[string]string) (newCVEs map[string]bool, newIssues []*GoVulnIssue, err error) {
defer derrors.Wrap(&err, "walkRepo(r, t, %q, triaged)", dirpath)
newCVEs = map[string]bool{}
for _, e := range t.Entries {
@@ -100,7 +100,7 @@
continue
}
cveID := strings.TrimSuffix(e.Name, ".json")
- if triaged[cveID] {
+ if _, ok := triaged[cveID]; ok {
continue
}
newCVEs[cveID] = true