From e0f722558141a6bba46553021b464b63e899a29f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Sun, 5 Jun 2022 09:08:00 +0800 Subject: [PATCH] Fix disable invalidptr --- common/buf/ptr.go | 31 ++++++++++++++++++------------- common/buf/stub.s | 0 2 files changed, 18 insertions(+), 13 deletions(-) delete mode 100644 common/buf/stub.s diff --git a/common/buf/ptr.go b/common/buf/ptr.go index 92058be27..b025cad70 100644 --- a/common/buf/ptr.go +++ b/common/buf/ptr.go @@ -3,23 +3,28 @@ package buf import ( - "os" + "unsafe" _ "unsafe" ) -//go:linkname parsedebugvars runtime.parsedebugvars -func parsedebugvars() - -func init() { - disableInvalidPtrCheck() +type dbgVar struct { + name string + value *int32 } -func disableInvalidPtrCheck() { - debug := os.Getenv("GODEBUG") - if debug == "" { - os.Setenv("GODEBUG", "invalidptr=0") - } else { - os.Setenv("GODEBUG", debug+",invalidptr=0") +//go:linkname dbgvars runtime.dbgvars +var dbgvars any + +// go.info.runtime.dbgvars: relocation target go.info.[]github.com/sagernet/sing/common/buf.dbgVar not defined +//var dbgvars []dbgVar + +func init() { + debugVars := *(*[]dbgVar)(unsafe.Pointer(&dbgvars)) + for _, v := range debugVars { + if v.name == "invalidptr" { + *v.value = 0 + return + } } - parsedebugvars() + panic("can't disable invalidptr") } diff --git a/common/buf/stub.s b/common/buf/stub.s deleted file mode 100644 index e69de29bb..000000000