From 3b0fc5a51f16f15934a6445ac88e5694fba6abfd Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 11 Oct 2023 13:24:54 -0700 Subject: [PATCH] net: clear malloc'ed memory in cgoResSearch For #61666 Change-Id: I7a0a849fba0abebe28804bdd6d364b154456e399 Reviewed-on: https://go-review.googlesource.com/c/go/+/534516 Run-TryBot: Ian Lance Taylor TryBot-Result: Gopher Robot Reviewed-by: Damien Neil Auto-Submit: Ian Lance Taylor Reviewed-by: Ian Lance Taylor --- src/net/cgo_unix.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/net/cgo_unix.go b/src/net/cgo_unix.go index 0a783d08a9..7ed5daad73 100644 --- a/src/net/cgo_unix.go +++ b/src/net/cgo_unix.go @@ -319,8 +319,15 @@ func cgoResSearch(hostname string, rtype, class int) ([]dnsmessage.Resource, err acquireThread() defer releaseThread() - state := (*_C_struct___res_state)(_C_malloc(unsafe.Sizeof(_C_struct___res_state{}))) - defer _C_free(unsafe.Pointer(state)) + resStateSize := unsafe.Sizeof(_C_struct___res_state{}) + var state *_C_struct___res_state + if resStateSize > 0 { + mem := _C_malloc(resStateSize) + defer _C_free(mem) + memSlice := unsafe.Slice((*byte)(mem), resStateSize) + clear(memSlice) + state = (*_C_struct___res_state)(unsafe.Pointer(&memSlice[0])) + } if err := _C_res_ninit(state); err != nil { return nil, errors.New("res_ninit failure: " + err.Error()) } -- 2.50.0