summaryrefslogtreecommitdiff
path: root/src/net/dnsclient_unix_test.go
diff options
context:
space:
mode:
authorMateusz Poliwczak <mpoliwczak34@gmail.com>2022-09-09 06:40:57 +0000
committerGopher Robot <gobot@golang.org>2022-09-16 20:39:46 +0000
commit2d89bec2de0ee9d340346dea6b1506457f5f7722 (patch)
tree8246c87222f1a440a659e7c110c86969199f2db4 /src/net/dnsclient_unix_test.go
parenta84f46a28a1a9ffc0183fed394b6969c10fad502 (diff)
downloadgo-git-2d89bec2de0ee9d340346dea6b1506457f5f7722.tar.gz
net: set AD bit in DNS queries when trust-ad in resolv.conf
Fixes #51152 Change-Id: Ib366e733434b4bb60ac93e6e622d9ba50bfe4e26 GitHub-Last-Rev: e98220d62fc4f5b60aa3e4839f46ecf8f8f75485 GitHub-Pull-Request: golang/go#54921 Reviewed-on: https://go-review.googlesource.com/c/go/+/428955 Reviewed-by: Damien Neil <dneil@google.com> Run-TryBot: Damien Neil <dneil@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Auto-Submit: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org>
Diffstat (limited to 'src/net/dnsclient_unix_test.go')
-rw-r--r--src/net/dnsclient_unix_test.go73
1 files changed, 69 insertions, 4 deletions
diff --git a/src/net/dnsclient_unix_test.go b/src/net/dnsclient_unix_test.go
index 17798e434b..553b220cbe 100644
--- a/src/net/dnsclient_unix_test.go
+++ b/src/net/dnsclient_unix_test.go
@@ -79,7 +79,7 @@ func TestDNSTransportFallback(t *testing.T) {
for _, tt := range dnsTransportFallbackTests {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
- _, h, err := r.exchange(ctx, tt.server, tt.question, time.Second, useUDPOrTCP)
+ _, h, err := r.exchange(ctx, tt.server, tt.question, time.Second, useUDPOrTCP, false)
if err != nil {
t.Error(err)
continue
@@ -135,7 +135,7 @@ func TestSpecialDomainName(t *testing.T) {
for _, tt := range specialDomainNameTests {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
- _, h, err := r.exchange(ctx, server, tt.question, 3*time.Second, useUDPOrTCP)
+ _, h, err := r.exchange(ctx, server, tt.question, 3*time.Second, useUDPOrTCP, false)
if err != nil {
t.Error(err)
continue
@@ -1593,7 +1593,7 @@ func TestDNSDialTCP(t *testing.T) {
}
r := Resolver{PreferGo: true, Dial: fake.DialContext}
ctx := context.Background()
- _, _, err := r.exchange(ctx, "0.0.0.0", mustQuestion("com.", dnsmessage.TypeALL, dnsmessage.ClassINET), time.Second, useUDPOrTCP)
+ _, _, err := r.exchange(ctx, "0.0.0.0", mustQuestion("com.", dnsmessage.TypeALL, dnsmessage.ClassINET), time.Second, useUDPOrTCP, false)
if err != nil {
t.Fatal("exhange failed:", err)
}
@@ -1746,7 +1746,7 @@ func TestDNSUseTCP(t *testing.T) {
r := Resolver{PreferGo: true, Dial: fake.DialContext}
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
- _, _, err := r.exchange(ctx, "0.0.0.0", mustQuestion("com.", dnsmessage.TypeALL, dnsmessage.ClassINET), time.Second, useTCPOnly)
+ _, _, err := r.exchange(ctx, "0.0.0.0", mustQuestion("com.", dnsmessage.TypeALL, dnsmessage.ClassINET), time.Second, useTCPOnly, false)
if err != nil {
t.Fatal("exchange failed:", err)
}
@@ -2344,3 +2344,68 @@ func TestLongDNSNames(t *testing.T) {
}
}
}
+
+func TestDNSTrustAD(t *testing.T) {
+ fake := fakeDNSServer{
+ rh: func(_, _ string, q dnsmessage.Message, _ time.Time) (dnsmessage.Message, error) {
+ if q.Questions[0].Name.String() == "notrustad.go.dev." && q.Header.AuthenticData {
+ t.Error("unexpected AD bit")
+ }
+
+ if q.Questions[0].Name.String() == "trustad.go.dev." && !q.Header.AuthenticData {
+ t.Error("expected AD bit")
+ }
+
+ r := dnsmessage.Message{
+ Header: dnsmessage.Header{
+ ID: q.Header.ID,
+ Response: true,
+ RCode: dnsmessage.RCodeSuccess,
+ },
+ Questions: q.Questions,
+ }
+ if q.Questions[0].Type == dnsmessage.TypeA {
+ r.Answers = []dnsmessage.Resource{
+ {
+ Header: dnsmessage.ResourceHeader{
+ Name: q.Questions[0].Name,
+ Type: dnsmessage.TypeA,
+ Class: dnsmessage.ClassINET,
+ Length: 4,
+ },
+ Body: &dnsmessage.AResource{
+ A: TestAddr,
+ },
+ },
+ }
+ }
+
+ return r, nil
+ }}
+
+ r := &Resolver{PreferGo: true, Dial: fake.DialContext}
+
+ conf, err := newResolvConfTest()
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer conf.teardown()
+
+ err = conf.writeAndUpdate([]string{"nameserver 127.0.0.1"})
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if _, err := r.LookupIPAddr(context.Background(), "notrustad.go.dev"); err != nil {
+ t.Errorf("lookup failed: %v", err)
+ }
+
+ err = conf.writeAndUpdate([]string{"nameserver 127.0.0.1", "options trust-ad"})
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if _, err := r.LookupIPAddr(context.Background(), "trustad.go.dev"); err != nil {
+ t.Errorf("lookup failed: %v", err)
+ }
+}