Skip to content

Commit 3b0fc5a

Browse files
ianlancetaylorgopherbot
authored andcommitted
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 <[email protected]> TryBot-Result: Gopher Robot <[email protected]> Reviewed-by: Damien Neil <[email protected]> Auto-Submit: Ian Lance Taylor <[email protected]> Reviewed-by: Ian Lance Taylor <[email protected]>
1 parent 655155d commit 3b0fc5a

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

src/net/cgo_unix.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,8 +319,15 @@ func cgoResSearch(hostname string, rtype, class int) ([]dnsmessage.Resource, err
319319
acquireThread()
320320
defer releaseThread()
321321

322-
state := (*_C_struct___res_state)(_C_malloc(unsafe.Sizeof(_C_struct___res_state{})))
323-
defer _C_free(unsafe.Pointer(state))
322+
resStateSize := unsafe.Sizeof(_C_struct___res_state{})
323+
var state *_C_struct___res_state
324+
if resStateSize > 0 {
325+
mem := _C_malloc(resStateSize)
326+
defer _C_free(mem)
327+
memSlice := unsafe.Slice((*byte)(mem), resStateSize)
328+
clear(memSlice)
329+
state = (*_C_struct___res_state)(unsafe.Pointer(&memSlice[0]))
330+
}
324331
if err := _C_res_ninit(state); err != nil {
325332
return nil, errors.New("res_ninit failure: " + err.Error())
326333
}

0 commit comments

Comments
 (0)