Skip to content

Commit

Permalink
fixup! feat: Server.Run(...) validate addr
Browse files Browse the repository at this point in the history
  • Loading branch information
jimlambrt committed Feb 21, 2024
1 parent 2b5fa2c commit 5e34c69
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 8 deletions.
12 changes: 7 additions & 5 deletions server.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,13 @@ func validateAddr(addr string) (string, error) {
}
rawHost := addr[0:lastColon]
rawPort := addr[lastColon+1:]
if len(rawPort) == 0 {
switch {
case len(rawPort) == 0:
return "", fmt.Errorf("%s: missing port in addr %s : %w", op, addr, ErrInvalidParameter)
}
if len(rawHost) == 0 {
case len(rawHost) == 0:
return fmt.Sprintf(":%s", rawPort), nil
case addr[0] == '[' && addr[len(addr)-1] == ']':
return "", fmt.Errorf("%s: missing port in ipv6 addr : %s : %w", op, addr, ErrInvalidParameter)
}
// ipv6 literal with proper brackets
if rawHost[0] == '[' {
Expand All @@ -99,8 +101,8 @@ func validateAddr(addr string) (string, error) {
if end < 0 {
return "", fmt.Errorf("%s: missing ']' in ipv6 address %s : %w", op, addr, ErrInvalidParameter)
}
trimedIp := strings.Trim(rawHost, "[]")
if net.ParseIP(trimedIp) == nil {
trimmedIp := strings.Trim(rawHost, "[]")
if net.ParseIP(trimmedIp) == nil {
return "", fmt.Errorf("%s: invalid ipv6 address %s : %w", op, rawHost, ErrInvalidParameter)
}
// ipv6 literal has enclosing brackets, and it's a valid ipv6 address, so we're good
Expand Down
12 changes: 9 additions & 3 deletions server_internal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,15 +167,15 @@ func TestValidateAddr(t *testing.T) {
wantErrIs: ErrInvalidParameter,
},
{
name: "missing-port -pv4",
name: "missing-port-ipv4",
addr: "127.0.0.1",
wantErrContains: "missing port in addr",
wantErrIs: ErrInvalidParameter,
},
{
name: "err-missing-port-ipv6",
addr: "[::1]",
wantErrContains: "missing ']' in ipv6 address [::1]",
wantErrContains: "missing port in ipv6 addr : [::1]",
wantErrIs: ErrInvalidParameter,
},
{
Expand All @@ -185,7 +185,13 @@ func TestValidateAddr(t *testing.T) {
wantErrIs: ErrInvalidParameter,
},
{
name: "err-invalid-IPv6-address-missing-bracket",
name: "err-invalid-IPv6-address-missing-start-bracket",
addr: "::1]",
wantErrContains: "invalid ipv6 address + port ::1]",
wantErrIs: ErrInvalidParameter,
},
{
name: "err-invalid-IPv6-address-missing-final-bracket",
addr: "[::1",
wantErrContains: "missing ']' in ipv6 address [::1",
wantErrIs: ErrInvalidParameter,
Expand Down

0 comments on commit 5e34c69

Please sign in to comment.