internal/cvelist: triaged based on data_version
cvelist.Run expects CVEs to have a data_version of v4.0. Check
for that information explicitly.
Change-Id: I5b4f56996f087c3c398a0112cc5bb39585463e10
Reviewed-on: https://go-review.googlesource.com/c/vuln/+/360719
Trust: Julie Qiu <julie@golang.org>
Run-TryBot: Julie Qiu <julie@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Roland Shoemaker <roland@golang.org>
diff --git a/internal/cvelist/cvelist.go b/internal/cvelist/cvelist.go
index b15593b..f44b517 100644
--- a/internal/cvelist/cvelist.go
+++ b/internal/cvelist/cvelist.go
@@ -180,20 +180,28 @@
// cveToIssue creates a GoVulnIssue from a c *cveschema.CVE.
func cveToIssue(c *cveschema.CVE) (_ *GoVulnIssue, err error) {
- defer derrors.Wrap(&err, "cveToIssue(c)")
+ defer derrors.Wrap(&err, "cveToIssue(%q)", c.CVEDataMeta.ID)
if isPendingCVE(c) {
return nil, nil
}
+ switch c.DataVersion {
+ case "4.0":
+ return cveToIssueV4(c)
+ default:
+ // TODO(https://golang.org/issue/49289): Add support for v5.0.
+ log.Printf("Unxpected data_version for CVE %q: %q (skipping)", c.CVEDataMeta.ID, c.DataVersion)
+ return nil, nil
+ }
+}
+
+func cveToIssueV4(c *cveschema.CVE) (_ *GoVulnIssue, err error) {
mp, err := modulePathFromCVE(c)
if err != nil {
- return nil, fmt.Errorf("modulePathFromCVE: %v", err)
+ return nil, err
}
-
if mp == "" {
return nil, nil
}
- // TODO: implement additional checks on description and vendor information.
-
var links report.Links
for _, r := range c.References.ReferenceData {
if links.Commit == "" && strings.Contains(r.URL, "/commit/") {
@@ -204,7 +212,6 @@
links.Context = append(links.Context, r.URL)
}
}
-
var cwe string
for _, pt := range c.Problemtype.ProblemtypeData {
for _, d := range pt.Description {