1
0
mirror of https://github.com/golang/go synced 2024-11-11 18:31:38 -07:00

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>
This commit is contained in:
Michael Pratt 2024-08-01 10:17:14 -04:00 committed by Gopher Robot
parent b26134bf17
commit 38f0a829aa

View File

@ -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 {