• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1package main
2
3import (
4	"fmt"
5	"runtime"
6	"unsafe"
7)
8
9func main() {
10	p := new([1024 * 1000]int)
11	p[0] = 10
12	r := bar(&p[1024*1000-1])
13	fmt.Printf("r value is %d", r)
14}
15
16func bar(a *int) int {
17	p := unsafe.Add(unsafe.Pointer(a), 2*unsafe.Sizeof(int(1)))
18	runtime.ASanWrite(p, 8) // BOOM
19	*((*int)(p)) = 10
20	return *((*int)(p))
21}
22