mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Add more helpful error message for -add-host
Fixes: #10655 As noted in the issue, bad format was being returned even if the format was appropriate, but the IP was invalid. This adds a better error message for when the IP address fails validation. Docker-DCO-1.1-Signed-off-by: Phil Estes <estesp@linux.vnet.ibm.com> (github: estesp)
This commit is contained in:
parent
a98355561d
commit
1ce9fa1c60
2 changed files with 15 additions and 10 deletions
|
@ -207,10 +207,10 @@ func ValidateExtraHost(val string) (string, error) {
|
||||||
// allow for IPv6 addresses in extra hosts by only splitting on first ":"
|
// allow for IPv6 addresses in extra hosts by only splitting on first ":"
|
||||||
arr := strings.SplitN(val, ":", 2)
|
arr := strings.SplitN(val, ":", 2)
|
||||||
if len(arr) != 2 || len(arr[0]) == 0 {
|
if len(arr) != 2 || len(arr[0]) == 0 {
|
||||||
return "", fmt.Errorf("bad format for add-host: %s", val)
|
return "", fmt.Errorf("bad format for add-host: %q", val)
|
||||||
}
|
}
|
||||||
if _, err := ValidateIPAddress(arr[1]); err != nil {
|
if _, err := ValidateIPAddress(arr[1]); err != nil {
|
||||||
return "", fmt.Errorf("bad format for add-host: %s", val)
|
return "", fmt.Errorf("invalid IP address in add-host: %q", arr[1])
|
||||||
}
|
}
|
||||||
return val, nil
|
return val, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package opts
|
package opts
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -113,11 +114,11 @@ func TestValidateExtraHosts(t *testing.T) {
|
||||||
`ipv6local:::1`,
|
`ipv6local:::1`,
|
||||||
}
|
}
|
||||||
|
|
||||||
invalid := []string{
|
invalid := map[string]string{
|
||||||
`myhost:192.notanipaddress.1`,
|
`myhost:192.notanipaddress.1`: `invalid IP`,
|
||||||
`thathost-nosemicolon10.0.0.1`,
|
`thathost-nosemicolon10.0.0.1`: `bad format`,
|
||||||
`anipv6host:::::1`,
|
`anipv6host:::::1`: `invalid IP`,
|
||||||
`ipv6local:::0::`,
|
`ipv6local:::0::`: `invalid IP`,
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, extrahost := range valid {
|
for _, extrahost := range valid {
|
||||||
|
@ -126,9 +127,13 @@ func TestValidateExtraHosts(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, extrahost := range invalid {
|
for extraHost, expectedError := range invalid {
|
||||||
if _, err := ValidateExtraHost(extrahost); err == nil {
|
if _, err := ValidateExtraHost(extraHost); err == nil {
|
||||||
t.Fatalf("ValidateExtraHost(`" + extrahost + "`) should have failed validation")
|
t.Fatalf("ValidateExtraHost(`%q`) should have failed validation", extraHost)
|
||||||
|
} else {
|
||||||
|
if !strings.Contains(err.Error(), expectedError) {
|
||||||
|
t.Fatalf("ValidateExtraHost(`%q`) error should contain %q", extraHost, expectedError)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue