diff options
| author | Michael Pratt <mpratt@google.com> | 2024-08-01 10:17:14 -0400 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2024-08-01 15:02:27 +0000 |
| commit | 38f0a829aa041cbe5f694da52d733352aa5b70bc (patch) | |
| tree | 4e405428879a14346a102c02ecf1c8a5dd007d1c /src/debug | |
| parent | b26134bf17972f959daf178087fcc0bd74b4015c (diff) | |
| download | go-38f0a829aa041cbe5f694da52d733352aa5b70bc.tar.xz | |
debug/buildid: treat too large string as "not a Go executable"
If the length does not fit in int, saferio.ReadDataAt returns
io.ErrUnexpectedEOF. Treat is as an invalid format.
Fixes #68692.
For #68592.
Cq-Include-Trybots: luci.golang.try:gotip-linux-386-longtest
Change-Id: Ie856f29c907fd10e6d9b7dfbb6f0d8008a75a1c6
Reviewed-on: https://go-review.googlesource.com/c/go/+/602435
Auto-Submit: Michael Pratt <mpratt@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'src/debug')
| -rw-r--r-- | src/debug/buildinfo/buildinfo.go | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/debug/buildinfo/buildinfo.go b/src/debug/buildinfo/buildinfo.go index fa02344cd3..f3d38b26e8 100644 --- a/src/debug/buildinfo/buildinfo.go +++ b/src/debug/buildinfo/buildinfo.go @@ -295,6 +295,10 @@ func decodeString(x exe, addr uint64) (string, uint64, error) { b, err = readData(x, addr, length) if err != nil { + if err == io.ErrUnexpectedEOF { + // Length too large to allocate. Clearly bogus value. + return "", 0, errNotGoExe + } return "", 0, err } if uint64(len(b)) < length { |
