From faf40fd62f4b186f9f5ed57ab25661ff036b944c Mon Sep 17 00:00:00 2001 From: joeybloggs Date: Tue, 2 Feb 2016 08:12:47 -0500 Subject: [PATCH] Correct validation for TCPAddrResolvable --- baked_in.go | 12 ++++++++---- validator_test.go | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/baked_in.go b/baked_in.go index cb9e72b..af0d3fa 100644 --- a/baked_in.go +++ b/baked_in.go @@ -87,13 +87,13 @@ var bakedInValidators = map[string]Func{ "tcp4_addr": IsTCP4AddrResolvable, "tcp6_addr": IsTCP6AddrResolvable, "tcp_addr": IsTCPAddrResolvable, - "udp4_addr": IsUDP4AddrResolvable, - "udp6_addr": IsUDP6AddrResolvable, - "udp_addr": IsUDPAddrResolvable, + "udp4_addr": IsUDP4AddrResolvable, // need to do + "udp6_addr": IsUDP6AddrResolvable, // need to do + "udp_addr": IsUDPAddrResolvable, // need to do "ip4_addr": IsIP4AddrResolvable, "ip6_addr": IsIP6AddrResolvable, "ip_addr": IsIPAddrResolvable, - "unix_addr": IsUnixAddrResolvable, + "unix_addr": IsUnixAddrResolvable, // need to do "mac": IsMAC, } @@ -1290,6 +1290,10 @@ func IsTCP6AddrResolvable(v *Validate, topStruct reflect.Value, currentStructOrF func IsTCPAddrResolvable(v *Validate, topStruct reflect.Value, currentStructOrField reflect.Value, field reflect.Value, fieldType reflect.Type, fieldKind reflect.Kind, param string) bool { // if string before the post is blank then invalid + if !IsTCP4AddrResolvable(v, topStruct, currentStructOrField, field, fieldType, fieldKind, param) && + !IsTCP6AddrResolvable(v, topStruct, currentStructOrField, field, fieldType, fieldKind, param) { + return false + } _, err := net.ResolveTCPAddr("tcp", field.String()) return err == nil diff --git a/validator_test.go b/validator_test.go index 7329e48..ee4309b 100644 --- a/validator_test.go +++ b/validator_test.go @@ -1993,7 +1993,7 @@ func TestTCPAddrValidation(t *testing.T) { param string expected bool }{ - {":80", true}, + {":80", false}, {"127.0.0.1:80", true}, {"[::1]:80", true}, {"256.0.0.0:1", false},