cmd/govulncheck: initial commit

Add the govulncheck tool to the cmd directory.

This is a rewrite of the govulncheck in vulndb/govulncheck, but using
the new vulncheck package.

This initial version omits some flags and does not handle text
output yet.

This CL was cherry-picked from, with the following

* The go.mod file is removed, since there is no reason this needs to be
  a module.

* Build constraints are added for go1.18, since cmd/govulncheck imports
  vulncheck.Binary which is only defined in go1.18.

Change-Id: I5e9a00ed72efa9860a61e66a9b7f43d3c06ad43d
Trust: Julie Qiu <>
Run-TryBot: Julie Qiu <>
TryBot-Result: Gopher Robot <>
Reviewed-by: Jonathan Amsterdam <>
5 files changed
tree: 8bb1a75e79e5406bf6770eee5522a3b4e5b55248
  1. client/
  2. cmd/
  3. devtools/
  4. internal/
  5. osv/
  6. vulncheck/
  7. .gitignore
  8. all_test.go
  10. checks.bash
  13. go.mod
  14. go.sum
  18. tools_test.go

Go Vulnerability Database

Go Reference

This repository contains code for hosting the Go Vulnerability Database. The actual reports can be found at x/vulndb.

Neither the code, nor the data, nor the existence of this repository is to be considered stable. See the Draft Design for details on this project.

Accessing the database

The Go vulnerability database is rooted at and provides data as JSON. We recommend using client.Client to read data from the Go vulnerability database.

Do not rely on the contents of the x/vulndb repository. The YAML files in that repository are maintained using an internal format that is subject to change without warning.

The endpoints the table below are supported. For each path:

  • $base is the path portion of a Go vulnerability database URL (
  • $module is a module path
  • $vuln is a Go vulnerabilitiy ID (for example, GO-2021-1234)
$base/index.jsonList of module paths in the database mapped to its last modified timestamp (link).
$base/$module.jsonList of vulnerability entries for that module (example).
$base/ID/index.jsonList of all the vulnerability entries in the database
$base/ID/$vuln.jsonAn individual Go vulnerability report

Note that these paths and format are provisional and likely to change until an approved proposal.


Some of these packages can probably be coalesced, but for now are easier to work on in a more segmented fashion.


Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.

Database entries available at are distributed under the terms of the CC-BY 4.0 license.