]> Cypherpunks.ru repositories - gostls13.git/commit
reflect: make Elem panic on bad notinheap pointers
authorKeith Randall <khr@golang.org>
Wed, 15 Sep 2021 16:56:09 +0000 (09:56 -0700)
committerKeith Randall <khr@golang.org>
Fri, 15 Oct 2021 18:07:49 +0000 (18:07 +0000)
commit8331f25e96d6120bb0ec212bd03abcae53282769
tree28214cd8c99d41a8f1e1de8c384f605c2477c09e
parent8c99421f01aca303240a8f809bc65fa0c56db861
reflect: make Elem panic on bad notinheap pointers

This CL fixes the subtle issue that Elem can promote a
not-in-heap pointer, which could be any bit pattern, into an
unsafe.Pointer, which the garbage collector can see. If that
resulting value is bad, it can crash the GC.

Make sure that we don't introduce bad pointers that way. We can
make Elem() panic, because any such bad pointers are in the Go heap,
and not-in-heap pointers are not allowed to point into the Go heap.

Update #48399

Change-Id: Ieaf35a611b16b4dfb5e907e229ed4a2aed30e18c
Reviewed-on: https://go-review.googlesource.com/c/go/+/350153
Trust: Keith Randall <khr@golang.org>
Trust: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/reflect/all_test.go
src/reflect/value.go
src/runtime/mbitmap.go