]> Cypherpunks repositories - gostls13.git/commitdiff
net: clear malloc'ed memory in cgoResSearch
authorIan Lance Taylor <iant@golang.org>
Wed, 11 Oct 2023 20:24:54 +0000 (13:24 -0700)
committerGopher Robot <gobot@golang.org>
Wed, 11 Oct 2023 22:40:01 +0000 (22:40 +0000)
For #61666

Change-Id: I7a0a849fba0abebe28804bdd6d364b154456e399
Reviewed-on: https://go-review.googlesource.com/c/go/+/534516
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
src/net/cgo_unix.go

index 0a783d08a9f15b9278ac47a3333706cf41f3c933..7ed5daad73a6316dae79de46a926fe8d2b690e35 100644 (file)
@@ -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())
        }