aboutsummaryrefslogtreecommitdiff
path: root/src/debug
diff options
context:
space:
mode:
authorMichael Pratt <mpratt@google.com>2024-08-01 10:17:14 -0400
committerGopher Robot <gobot@golang.org>2024-08-01 15:02:27 +0000
commit38f0a829aa041cbe5f694da52d733352aa5b70bc (patch)
tree4e405428879a14346a102c02ecf1c8a5dd007d1c /src/debug
parentb26134bf17972f959daf178087fcc0bd74b4015c (diff)
downloadgo-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.go4
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 {