From: Mateusz Poliwczak Date: Tue, 20 Dec 2022 15:24:06 +0000 (+0000) Subject: net: use correct dns msg size X-Git-Tag: go1.20rc2~1^2~17 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=78fc81070a853d08a71f70fa20b2093f5535e6c5;p=gostls13.git net: use correct dns msg size Set bufSize to the actual dns message size, so that the p.Start (below) gets a fully valid dns message. Change-Id: I585e8a3d71f88db93e09bd0dbbc0875ee6de9a97 GitHub-Last-Rev: 0967be35012d2e28366e6d47eee4968c7e8d5e4a GitHub-Pull-Request: golang/go#57392 Reviewed-on: https://go-review.googlesource.com/c/go/+/458375 TryBot-Result: Gopher Robot Run-TryBot: Ian Lance Taylor Auto-Submit: Ian Lance Taylor Reviewed-by: Damien Neil Reviewed-by: Ian Lance Taylor --- diff --git a/src/net/cgo_unix.go b/src/net/cgo_unix.go index 5b0df56eae..6a2c369c66 100644 --- a/src/net/cgo_unix.go +++ b/src/net/cgo_unix.go @@ -383,8 +383,9 @@ func cgoResSearch(hostname string, rtype, class int) ([]dnsmessage.Resource, err s := _C_CString(hostname) defer _C_FreeCString(s) + var size int for { - size, _ := _C_res_nsearch(state, s, class, rtype, buf, bufSize) + size, _ = _C_res_nsearch(state, s, class, rtype, buf, bufSize) if size <= 0 || size > 0xffff { return nil, errors.New("res_nsearch failure") } @@ -399,7 +400,7 @@ func cgoResSearch(hostname string, rtype, class int) ([]dnsmessage.Resource, err } var p dnsmessage.Parser - if _, err := p.Start(unsafe.Slice((*byte)(unsafe.Pointer(buf)), bufSize)); err != nil { + if _, err := p.Start(unsafe.Slice((*byte)(unsafe.Pointer(buf)), size)); err != nil { return nil, err } p.SkipAllQuestions()