From: Ian Lance Taylor Date: Wed, 11 Oct 2023 20:24:54 +0000 (-0700) Subject: net: clear malloc'ed memory in cgoResSearch X-Git-Tag: go1.22rc1~619 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=3b0fc5a51f16f15934a6445ac88e5694fba6abfd;p=gostls13.git 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 --- 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()) }