mirror of https://github.com/golang/go.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: 0967be3501
GitHub-Pull-Request: golang/go#57392
Reviewed-on: https://go-review.googlesource.com/c/go/+/458375
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
This commit is contained in:
parent
a5a4744250
commit
78fc81070a
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Reference in New Issue