Commit 2f73fe7a authored by Dan Peterson's avatar Dan Peterson Committed by Matthew Dempsky

net: use libresolv rules for ndots range and validation

BIND libresolv allows values from 0 to 15.

For invalid values and negative numbers, 0 is used.
For numbers greater than 15, 15 is used.

Fixes #15419

Change-Id: I1009bc119c3e87919bcb55a80a35532e9fc3ba52
Reviewed-on: https://go-review.googlesource.com/24901Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent 04e76f29
......@@ -92,8 +92,10 @@ func dnsReadConfig(filename string) *dnsConfig {
switch {
case hasPrefix(s, "ndots:"):
n, _, _ := dtoi(s[6:])
if n < 1 {
n = 1
if n < 0 {
n = 0
} else if n > 15 {
n = 15
}
conf.ndots = n
case hasPrefix(s, "timeout:"):
......
......@@ -60,6 +60,36 @@ var dnsReadConfigTests = []struct {
search: []string{"domain.local."},
},
},
{
name: "testdata/invalid-ndots-resolv.conf",
want: &dnsConfig{
servers: defaultNS,
ndots: 0,
timeout: 5 * time.Second,
attempts: 2,
search: []string{"domain.local."},
},
},
{
name: "testdata/large-ndots-resolv.conf",
want: &dnsConfig{
servers: defaultNS,
ndots: 15,
timeout: 5 * time.Second,
attempts: 2,
search: []string{"domain.local."},
},
},
{
name: "testdata/negative-ndots-resolv.conf",
want: &dnsConfig{
servers: defaultNS,
ndots: 0,
timeout: 5 * time.Second,
attempts: 2,
search: []string{"domain.local."},
},
},
{
name: "testdata/openbsd-resolv.conf",
want: &dnsConfig{
......
options ndots:invalid
\ No newline at end of file
options ndots:16
\ No newline at end of file
options ndots:-1
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment