diff options
| author | Andy Pan <panjf2000@gmail.com> | 2022-08-15 23:09:00 +0800 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2022-08-19 03:01:14 +0000 |
| commit | 55ecc3a88670c14bbbfc9d6c96cf65891cc608f5 (patch) | |
| tree | e6cd2e093bf5a3fd22403e63082d5e739a6e7c54 /src | |
| parent | ee833ed72e8ccfdd2193b0e6c0223ee8eb99b380 (diff) | |
| download | go-55ecc3a88670c14bbbfc9d6c96cf65891cc608f5.tar.xz | |
net: allow single dot in resolv.conf search statement
A single dot in a search statement doesn't affect DNS lookup, so just ignore it and a syntax error.
Fixes #54124
Change-Id: Idd43bd34c5c16af50cba51f0b6e24f992eec6e57
Reviewed-on: https://go-review.googlesource.com/c/go/+/423875
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/net/dnsconfig_unix.go | 10 | ||||
| -rw-r--r-- | src/net/dnsconfig_unix_test.go | 13 | ||||
| -rw-r--r-- | src/net/testdata/search-single-dot-resolv.conf | 5 |
3 files changed, 25 insertions, 3 deletions
diff --git a/src/net/dnsconfig_unix.go b/src/net/dnsconfig_unix.go index 3ba6d44fc3..65098f6827 100644 --- a/src/net/dnsconfig_unix.go +++ b/src/net/dnsconfig_unix.go @@ -64,9 +64,13 @@ func dnsReadConfig(filename string) *dnsConfig { } case "search": // set search path to given servers - conf.search = make([]string, len(f)-1) - for i := 0; i < len(conf.search); i++ { - conf.search[i] = ensureRooted(f[i+1]) + conf.search = make([]string, 0, len(f)-1) + for i := 1; i < len(f); i++ { + name := ensureRooted(f[i]) + if name == "." { + continue + } + conf.search = append(conf.search, name) } case "options": // magic options diff --git a/src/net/dnsconfig_unix_test.go b/src/net/dnsconfig_unix_test.go index 513f624b00..9be751f2e3 100644 --- a/src/net/dnsconfig_unix_test.go +++ b/src/net/dnsconfig_unix_test.go @@ -53,6 +53,16 @@ var dnsReadConfigTests = []struct { }, }, { + name: "testdata/search-single-dot-resolv.conf", + want: &dnsConfig{ + servers: []string{"8.8.8.8:53"}, + search: []string{}, + ndots: 1, + timeout: 5 * time.Second, + attempts: 2, + }, + }, + { name: "testdata/empty-resolv.conf", want: &dnsConfig{ servers: defaultNS, @@ -166,6 +176,9 @@ func TestDNSReadConfig(t *testing.T) { getHostname = func() (string, error) { return "host.domain.local", nil } for _, tt := range dnsReadConfigTests { + if len(tt.want.search) == 0 { + tt.want.search = append(tt.want.search, dnsDefaultSearch()...) + } conf := dnsReadConfig(tt.name) if conf.err != nil { t.Fatal(conf.err) diff --git a/src/net/testdata/search-single-dot-resolv.conf b/src/net/testdata/search-single-dot-resolv.conf new file mode 100644 index 0000000000..934cd3e97c --- /dev/null +++ b/src/net/testdata/search-single-dot-resolv.conf @@ -0,0 +1,5 @@ +# /etc/resolv.conf + +domain localdomain +search . +nameserver 8.8.8.8 |
