OXIESEC PANEL
- Current Dir:
/
/
opt
/
golang
/
1.22.0
/
test
/
uintptrescapes.dir
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
02/02/2024 06:09:55 PM
rwxr-xr-x
📄
a.go
879 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
main.go
1.28 KB
02/02/2024 06:09:55 PM
rw-r--r--
Editing: main.go
Close
// Copyright 2016 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package main import ( "fmt" "os" "sync" "unsafe" "./a" ) func F1() int { var buf [1024]int a.F1(uintptr(unsafe.Pointer(&buf[0]))) return buf[0] } func F2() int { var buf [1024]int a.F2(uintptr(unsafe.Pointer(&buf[0]))) return buf[0] } var t = a.GetT() func M1() int { var buf [1024]int t.M1(uintptr(unsafe.Pointer(&buf[0]))) return buf[0] } func M2() int { var buf [1024]int t.M2(uintptr(unsafe.Pointer(&buf[0]))) return buf[0] } func main() { // Use different goroutines to force stack growth. var wg sync.WaitGroup wg.Add(4) c := make(chan bool, 4) go func() { defer wg.Done() b := F1() if b != 42 { fmt.Printf("F1: got %d, expected 42\n", b) c <- false } }() go func() { defer wg.Done() b := F2() if b != 42 { fmt.Printf("F2: got %d, expected 42\n", b) c <- false } }() go func() { defer wg.Done() b := M1() if b != 42 { fmt.Printf("M1: got %d, expected 42\n", b) c <- false } }() go func() { defer wg.Done() b := M2() if b != 42 { fmt.Printf("M2: got %d, expected 42\n", b) c <- false } }() wg.Wait() select { case <-c: os.Exit(1) default: } }