mirror of https://github.com/golang/go.git
net: Don't read beyond end of slice when parsing resolv.conf options.
Fixes #8252. LGTM=adg R=ruiu, josharian, adg CC=golang-codereviews https://golang.org/cl/102470046
This commit is contained in:
parent
c213b8864f
commit
0a5cb7dc49
|
|
@ -75,19 +75,19 @@ func dnsReadConfig(filename string) (*dnsConfig, error) {
|
|||
for i := 1; i < len(f); i++ {
|
||||
s := f[i]
|
||||
switch {
|
||||
case len(s) >= 6 && s[0:6] == "ndots:":
|
||||
case hasPrefix(s, "ndots:"):
|
||||
n, _, _ := dtoi(s, 6)
|
||||
if n < 1 {
|
||||
n = 1
|
||||
}
|
||||
conf.ndots = n
|
||||
case len(s) >= 8 && s[0:8] == "timeout:":
|
||||
case hasPrefix(s, "timeout:"):
|
||||
n, _, _ := dtoi(s, 8)
|
||||
if n < 1 {
|
||||
n = 1
|
||||
}
|
||||
conf.timeout = n
|
||||
case len(s) >= 8 && s[0:9] == "attempts:":
|
||||
case hasPrefix(s, "attempts:"):
|
||||
n, _, _ := dtoi(s, 9)
|
||||
if n < 1 {
|
||||
n = 1
|
||||
|
|
@ -103,3 +103,7 @@ func dnsReadConfig(filename string) (*dnsConfig, error) {
|
|||
|
||||
return conf, nil
|
||||
}
|
||||
|
||||
func hasPrefix(s, prefix string) bool {
|
||||
return len(s) >= len(prefix) && s[:len(prefix)] == prefix
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,3 +3,4 @@
|
|||
domain Home
|
||||
nameserver 192.168.1.1
|
||||
options ndots:5 timeout:10 attempts:3 rotate
|
||||
options attempts 3
|
||||
|
|
|
|||
Loading…
Reference in New Issue