]> Cypherpunks repositories - gostls13.git/commitdiff
net: use correct dns msg size
authorMateusz Poliwczak <mpoliwczak34@gmail.com>
Tue, 20 Dec 2022 15:24:06 +0000 (15:24 +0000)
committerGopher Robot <gobot@golang.org>
Wed, 21 Dec 2022 03:49:27 +0000 (03:49 +0000)
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 <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>
src/net/cgo_unix.go

index 5b0df56eae8a57bf7266a47215813ad6aa8f37e2..6a2c369c668d0d1dc279a6defe37390346fd1aed 100644 (file)
@@ -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()