Julie Qiu submitted this change.
internal: update error message for binary mode
Update error message when an invalid binary file is passed in. Also
fix some string formatting.
Fixes golang/go#59700
Change-Id: I0614289a74dc6555a80c7255ef5a36988fab3fe6
Reviewed-on: https://go-review.googlesource.com/c/vuln/+/486397
Run-TryBot: Julie Qiu <ju...@golang.org>
Reviewed-by: Julie Qiu <juli...@google.com>
TryBot-Result: Gopher Robot <go...@golang.org>
Reviewed-by: Tatiana Bradley <tatiana...@google.com>
---
A cmd/govulncheck/testdata/binarybadfileformat.ct
M internal/scan/binary.go
M internal/vulncheck/binary.go
M internal/vulncheck/internal/buildinfo/additions_scan.go
M internal/vulncheck/source.go
5 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/cmd/govulncheck/testdata/binarybadfileformat.ct b/cmd/govulncheck/testdata/binarybadfileformat.ct
new file mode 100644
index 0000000..a55d047
--- /dev/null
+++ b/cmd/govulncheck/testdata/binarybadfileformat.ct
@@ -0,0 +1,10 @@
+# Test of passing a non-binary file to -mode=binary
+
+$ govulncheck -mode=binary ${moddir}/vuln/go.mod --> FAIL 1
+govulncheck is an experimental tool. Share feedback at https://go.dev/s/govulncheck-feedback.
+
+Using govul...@v0.0.0-00000000000-20000101010101 with
+vulnerability data from testdata/vulndb-v1 (last modified 01 Jan 21 00:00 UTC).
+
+Scanning your binary for known vulnerabilities...
+govulncheck: could not parse provided binary: unrecognized file format
diff --git a/internal/scan/binary.go b/internal/scan/binary.go
index 794f669..4255024 100644
--- a/internal/scan/binary.go
+++ b/internal/scan/binary.go
@@ -9,6 +9,7 @@
import (
"context"
+ "fmt"
"os"
"strings"
"unicode"
@@ -32,7 +33,7 @@
}
vr, err := binary(ctx, exe, &cfg.Config)
if err != nil {
- return nil, err
+ return nil, fmt.Errorf("govulncheck: %v", err)
}
return createBinaryResult(vr), nil
}
diff --git a/internal/vulncheck/binary.go b/internal/vulncheck/binary.go
index 60cb07d..b351782 100644
--- a/internal/vulncheck/binary.go
+++ b/internal/vulncheck/binary.go
@@ -15,7 +15,6 @@
"strings"
"golang.org/x/tools/go/packages"
- "golang.org/x/vuln/internal/derrors"
"golang.org/x/vuln/internal/semver"
"golang.org/x/vuln/internal/vulncheck/internal/buildinfo"
)
@@ -23,11 +22,9 @@
// Binary detects presence of vulnerable symbols in exe.
// The Calls, Imports, and Requires fields on Result will be empty.
func Binary(ctx context.Context, exe io.ReaderAt, cfg *Config) (_ *Result, err error) {
- defer derrors.Wrap(&err, "vulncheck.Binary")
-
mods, packageSymbols, bi, err := buildinfo.ExtractPackagesAndSymbols(exe)
if err != nil {
- return nil, err
+ return nil, fmt.Errorf("could not parse provided binary: %v", err)
}
cmods := convertModules(mods)
diff --git a/internal/vulncheck/internal/buildinfo/additions_scan.go b/internal/vulncheck/internal/buildinfo/additions_scan.go
index e1464d2..9790cfa 100644
--- a/internal/vulncheck/internal/buildinfo/additions_scan.go
+++ b/internal/vulncheck/internal/buildinfo/additions_scan.go
@@ -54,7 +54,7 @@
funcSymName := gosym.FuncSymName(bi.GoVersion)
if funcSymName == "" {
- return nil, nil, nil, fmt.Errorf("binary built using unsupported Go Version: %v", bi.GoVersion)
+ return nil, nil, nil, fmt.Errorf("binary built using unsupported Go version: %q", bi.GoVersion)
}
x, err := openExe(bin)
diff --git a/internal/vulncheck/source.go b/internal/vulncheck/source.go
index 3971bb9..453386b 100644
--- a/internal/vulncheck/source.go
+++ b/internal/vulncheck/source.go
@@ -14,7 +14,6 @@
"golang.org/x/tools/go/callgraph"
"golang.org/x/tools/go/ssa"
"golang.org/x/vuln/internal"
- "golang.org/x/vuln/internal/derrors"
"golang.org/x/vuln/internal/osv"
"golang.org/x/vuln/internal/semver"
)
@@ -29,8 +28,6 @@
//
// 3) A CallGraph leading to the use of a known vulnerable function or method.
func Source(ctx context.Context, pkgs []*Package, cfg *Config) (_ *Result, err error) {
- defer derrors.Wrap(&err, "vulncheck.Source")
-
// buildSSA builds a whole program that assumes all packages use the same FileSet.
// Check all packages in pkgs are using the same FileSet.
// TODO(https://go.dev/issue/59729): take FileSet out of Package and
To view, visit change 486397. To unsubscribe, or for help writing mail filters, visit settings.