Use utils.net to parse ports instead of atoi (#89120)

Kubernetes-commit: 363bb3914296d5330dce29631fb6003c335cfcf7
This commit is contained in:
Jie Shen 2020-04-22 11:55:52 +08:00 committed by Kubernetes Publisher
parent 3dfa195a75
commit 5b17a56c1b
5 changed files with 16 additions and 14 deletions

4
Godeps/Godeps.json generated
View File

@ -572,7 +572,7 @@
}, },
{ {
"ImportPath": "k8s.io/api", "ImportPath": "k8s.io/api",
"Rev": "8490c30bbf50" "Rev": "2ca06ba83edf"
}, },
{ {
"ImportPath": "k8s.io/apimachinery", "ImportPath": "k8s.io/apimachinery",
@ -592,7 +592,7 @@
}, },
{ {
"ImportPath": "k8s.io/component-base", "ImportPath": "k8s.io/component-base",
"Rev": "8582c5203e4b" "Rev": "c7033cd69c96"
}, },
{ {
"ImportPath": "k8s.io/gengo", "ImportPath": "k8s.io/gengo",

8
go.mod
View File

@ -34,11 +34,11 @@ require (
github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1 // indirect github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1 // indirect
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd
gopkg.in/yaml.v2 v2.2.8 gopkg.in/yaml.v2 v2.2.8
k8s.io/api v0.0.0-20200418061343-8490c30bbf50 k8s.io/api v0.0.0-20200421221621-2ca06ba83edf
k8s.io/apimachinery v0.0.0-20200418021153-ec2e4e97fca4 k8s.io/apimachinery v0.0.0-20200418021153-ec2e4e97fca4
k8s.io/cli-runtime v0.0.0-20200415183333-5b13bc8b32e2 k8s.io/cli-runtime v0.0.0-20200415183333-5b13bc8b32e2
k8s.io/client-go v0.0.0-20200419061629-ede92e0fe62d k8s.io/client-go v0.0.0-20200419061629-ede92e0fe62d
k8s.io/component-base v0.0.0-20200410024425-8582c5203e4b k8s.io/component-base v0.0.0-20200421141809-c7033cd69c96
k8s.io/klog v1.0.0 k8s.io/klog v1.0.0
k8s.io/kube-openapi v0.0.0-20200403204345-e1beb1bd0f35 k8s.io/kube-openapi v0.0.0-20200403204345-e1beb1bd0f35
k8s.io/metrics v0.0.0-20200410031643-1542edda33c0 k8s.io/metrics v0.0.0-20200410031643-1542edda33c0
@ -51,11 +51,11 @@ require (
replace ( replace (
golang.org/x/sys => golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a // pinned to release-branch.go1.13 golang.org/x/sys => golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a // pinned to release-branch.go1.13
golang.org/x/tools => golang.org/x/tools v0.0.0-20190821162956-65e3620a7ae7 // pinned to release-branch.go1.13 golang.org/x/tools => golang.org/x/tools v0.0.0-20190821162956-65e3620a7ae7 // pinned to release-branch.go1.13
k8s.io/api => k8s.io/api v0.0.0-20200418061343-8490c30bbf50 k8s.io/api => k8s.io/api v0.0.0-20200421221621-2ca06ba83edf
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20200418021153-ec2e4e97fca4 k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20200418021153-ec2e4e97fca4
k8s.io/cli-runtime => k8s.io/cli-runtime v0.0.0-20200415183333-5b13bc8b32e2 k8s.io/cli-runtime => k8s.io/cli-runtime v0.0.0-20200415183333-5b13bc8b32e2
k8s.io/client-go => k8s.io/client-go v0.0.0-20200419061629-ede92e0fe62d k8s.io/client-go => k8s.io/client-go v0.0.0-20200419061629-ede92e0fe62d
k8s.io/code-generator => k8s.io/code-generator v0.0.0-20200418020935-461d14f5d1b5 k8s.io/code-generator => k8s.io/code-generator v0.0.0-20200418020935-461d14f5d1b5
k8s.io/component-base => k8s.io/component-base v0.0.0-20200410024425-8582c5203e4b k8s.io/component-base => k8s.io/component-base v0.0.0-20200421141809-c7033cd69c96
k8s.io/metrics => k8s.io/metrics v0.0.0-20200410031643-1542edda33c0 k8s.io/metrics => k8s.io/metrics v0.0.0-20200410031643-1542edda33c0
) )

4
go.sum
View File

@ -325,12 +325,12 @@ gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81
gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
k8s.io/api v0.0.0-20200418061343-8490c30bbf50/go.mod h1:ulbB/6H6vVXAkqfLv6nAqwp3OAksqUGzbqvrQ8uWFCs= k8s.io/api v0.0.0-20200421221621-2ca06ba83edf/go.mod h1:ulbB/6H6vVXAkqfLv6nAqwp3OAksqUGzbqvrQ8uWFCs=
k8s.io/apimachinery v0.0.0-20200418021153-ec2e4e97fca4/go.mod h1:imoz42hIYwpLTRWXU8pdJ9IE8DbxUsnU9lyVN8Y1SNo= k8s.io/apimachinery v0.0.0-20200418021153-ec2e4e97fca4/go.mod h1:imoz42hIYwpLTRWXU8pdJ9IE8DbxUsnU9lyVN8Y1SNo=
k8s.io/cli-runtime v0.0.0-20200415183333-5b13bc8b32e2/go.mod h1:if8I7E6TpO/p/o/qgW+hlE1SiBfK4wJB59roqSaO1gQ= k8s.io/cli-runtime v0.0.0-20200415183333-5b13bc8b32e2/go.mod h1:if8I7E6TpO/p/o/qgW+hlE1SiBfK4wJB59roqSaO1gQ=
k8s.io/client-go v0.0.0-20200419061629-ede92e0fe62d/go.mod h1:MfZqc6x+OyzDrOdkgL/RYZ5ymCNuAHRZE5kZKxY7dRc= k8s.io/client-go v0.0.0-20200419061629-ede92e0fe62d/go.mod h1:MfZqc6x+OyzDrOdkgL/RYZ5ymCNuAHRZE5kZKxY7dRc=
k8s.io/code-generator v0.0.0-20200418020935-461d14f5d1b5/go.mod h1:921XK/cUtrTpn/F0nAhNaFjo8I7Kue1BIEtdxsYFt9I= k8s.io/code-generator v0.0.0-20200418020935-461d14f5d1b5/go.mod h1:921XK/cUtrTpn/F0nAhNaFjo8I7Kue1BIEtdxsYFt9I=
k8s.io/component-base v0.0.0-20200410024425-8582c5203e4b/go.mod h1:grU+F0MqA5eYgNvtft1YM+zHsU4YH2WW18+1G97EZYQ= k8s.io/component-base v0.0.0-20200421141809-c7033cd69c96/go.mod h1:Oy1vNndAYVfSxhqiwZjXewh3892JpXigIluVU11U1XA=
k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
k8s.io/gengo v0.0.0-20200205140755-e0e292d8aa12/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200205140755-e0e292d8aa12/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=

View File

@ -27,6 +27,7 @@ import (
"k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/validation" "k8s.io/apimachinery/pkg/util/validation"
"k8s.io/kubectl/pkg/generate" "k8s.io/kubectl/pkg/generate"
utilsnet "k8s.io/utils/net"
) )
type ServiceCommonGeneratorV1 struct { type ServiceCommonGeneratorV1 struct {
@ -86,15 +87,11 @@ func (ServiceExternalNameGeneratorV1) ParamNames() []generate.GeneratorParam {
func parsePorts(portString string) (int32, intstr.IntOrString, error) { func parsePorts(portString string) (int32, intstr.IntOrString, error) {
portStringSlice := strings.Split(portString, ":") portStringSlice := strings.Split(portString, ":")
port, err := strconv.Atoi(portStringSlice[0]) port, err := utilsnet.ParsePort(portStringSlice[0], true)
if err != nil { if err != nil {
return 0, intstr.FromInt(0), err return 0, intstr.FromInt(0), err
} }
if errs := validation.IsValidPortNum(port); len(errs) != 0 {
return 0, intstr.FromInt(0), fmt.Errorf(strings.Join(errs, ","))
}
if len(portStringSlice) == 1 { if len(portStringSlice) == 1 {
return int32(port), intstr.FromInt(int(port)), nil return int32(port), intstr.FromInt(int(port)), nil
} }

View File

@ -175,7 +175,12 @@ func TestParsePorts(t *testing.T) {
portString: "-5:1234", portString: "-5:1234",
expectPort: 0, expectPort: 0,
expectTargetPort: intstr.IntOrString{Type: intstr.Int, IntVal: 0}, expectTargetPort: intstr.IntOrString{Type: intstr.Int, IntVal: 0},
expectErr: "must be between 1 and 65535, inclusive", expectErr: "parsing \"-5\": invalid syntax",
},
{
portString: "0:1234",
expectPort: 0,
expectTargetPort: intstr.IntOrString{Type: intstr.Int, IntVal: 1234},
}, },
{ {
portString: "5:65536", portString: "5:65536",