1
0
mirror of https://github.com/golang/go synced 2024-11-12 08:40:21 -07:00

runtime: guard against array out of bounds in GoroutineProfile

The previous CL is the real fix. This one is just insurance.

Fixes #14046 again.

Change-Id: I553349504bb1789e4b66c888dbe4034568918ad6
Reviewed-on: https://go-review.googlesource.com/18977
Reviewed-by: Austin Clements <austin@google.com>
This commit is contained in:
Russ Cox 2016-01-26 23:00:41 -05:00
parent 313fd1cb13
commit d9fdbf4820

View File

@ -554,6 +554,11 @@ func GoroutineProfile(p []StackRecord) (n int, ok bool) {
// Save other goroutines.
for _, gp1 := range allgs {
if isOK(gp1) {
if len(r) == 0 {
// Should be impossible, but better to return a
// truncated profile than to crash the entire process.
break
}
saveg(^uintptr(0), ^uintptr(0), gp1, &r[0])
r = r[1:]
}