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