diff options
| author | Josh Bleecher Snyder <josharian@gmail.com> | 2018-02-28 22:01:24 -0800 |
|---|---|---|
| committer | Josh Bleecher Snyder <josharian@gmail.com> | 2018-03-01 16:53:33 +0000 |
| commit | aa9c1a8f8038e88da6d7cbfdc56e34ff914b7b04 (patch) | |
| tree | fdc360731de1cd8fe5d6464f80a3249f951a7c50 /src/runtime/string.go | |
| parent | 77ba071ec6aef921eaaa50f84479bb1a9e15a268 (diff) | |
| download | go-aa9c1a8f8038e88da6d7cbfdc56e34ff914b7b04.tar.xz | |
runtime: fix amd64p32 indexbytes in presence of overflow
When the slice/string length is very large,
probably artifically large as in CL 97523,
adding BX (length) to R11 (pointer) overflows.
As a result, checking DI < R11 yields the wrong result.
Since they will be equal when the loop is done,
just check DI != R11 instead.
Yes, the pointer itself could overflow, but if that happens,
something else has gone pretty wrong; not our concern here.
Fixes #24187
Change-Id: I2f60fc6ccae739345d01bc80528560726ad4f8c6
Reviewed-on: https://go-review.googlesource.com/97802
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'src/runtime/string.go')
0 files changed, 0 insertions, 0 deletions
