63e2bed0ab
The code parsing register lists involves an inner loop on each range defined by the lo,hi bounds. The condition on this loop (for lo<=hi) is fragile, because the bounds are unsigned 16 bits numbers. In some corner cases, the calculated upper bound is 2^16-1 leading to an infinite loop. Parsing operand `[):[o-FP` results in: - an infinite loop for non ARM architectures - the generation of almost 2^16 errors for the ARM architecture (which are then ignored) This CL improves the code in 3 ways: - bail out early when parsing non R prefixed registers - make sure the register index is never negative - make sure the number of iterations is limited by the maximum size of the range (as a defensive measure). Fixes #12469 Change-Id: Ib1e7e36fb8ad5a3a52c50fc6219d3cfe2b39cc34 Reviewed-on: https://go-review.googlesource.com/14314 Reviewed-by: Rob Pike <r@golang.org> |
||
---|---|---|
api | ||
doc | ||
lib/time | ||
misc | ||
src | ||
test | ||
.gitattributes | ||
.gitignore | ||
AUTHORS | ||
CONTRIBUTING.md | ||
CONTRIBUTORS | ||
favicon.ico | ||
LICENSE | ||
PATENTS | ||
README.md | ||
robots.txt |
The Go Programming Language
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
For documentation about how to install and use Go, visit https://golang.org/ or load doc/install-source.html in your web browser.
Our canonical Git repository is located at https://go.googlesource.com/go. There is a mirror of the repository at https://github.com/golang/go.
Please report issues here: https://golang.org/issue/new
Go is the work of hundreds of contributors. We appreciate your help!
To contribute, please read the contribution guidelines: https://golang.org/doc/contribute.html
Please note that we do not use pull requests.
Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.
--
Binary Distribution Notes
If you have just untarred a binary Go distribution, you need to set the environment variable $GOROOT to the full path of the go directory (the one containing this file). You can omit the variable if you unpack it into /usr/local/go, or if you rebuild from sources by running all.bash (see doc/install-source.html). You should also add the Go binary directory $GOROOT/bin to your shell's path.
For example, if you extracted the tar file into $HOME/go, you might put the following in your .profile:
export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin
See https://golang.org/doc/install or doc/install.html for more details.