From fe9303d7f7f3979b64cba8dd37795f905cd5797f Mon Sep 17 00:00:00 2001 From: Yanqiang Miao Date: Mon, 13 Nov 2017 16:51:30 +0800 Subject: [PATCH] Make sure the ports is valid when parsing portString --- pkg/kubectl/service_basic.go | 11 +++++++++++ pkg/kubectl/service_basic_test.go | 14 ++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/pkg/kubectl/service_basic.go b/pkg/kubectl/service_basic.go index b7e91687732..1f31bd09a2a 100644 --- a/pkg/kubectl/service_basic.go +++ b/pkg/kubectl/service_basic.go @@ -89,14 +89,25 @@ func parsePorts(portString string) (int32, intstr.IntOrString, error) { if err != nil { 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 { return int32(port), intstr.FromInt(int(port)), nil } var targetPort intstr.IntOrString if portNum, err := strconv.Atoi(portStringSlice[1]); err != nil { + if errs := validation.IsValidPortName(portStringSlice[1]); len(errs) != 0 { + return 0, intstr.FromInt(0), fmt.Errorf(strings.Join(errs, ",")) + } targetPort = intstr.FromString(portStringSlice[1]) } else { + if errs := validation.IsValidPortNum(portNum); len(errs) != 0 { + return 0, intstr.FromInt(0), fmt.Errorf(strings.Join(errs, ",")) + } targetPort = intstr.FromInt(portNum) } return int32(port), targetPort, nil diff --git a/pkg/kubectl/service_basic_test.go b/pkg/kubectl/service_basic_test.go index 44875817e65..c7f9ff71780 100644 --- a/pkg/kubectl/service_basic_test.go +++ b/pkg/kubectl/service_basic_test.go @@ -115,6 +115,20 @@ func TestServiceBasicGenerate(t *testing.T) { }, expectErr: false, }, + { + name: "invalid-port", + tcp: []string{"65536"}, + clusterip: "None", + serviceType: v1.ServiceTypeClusterIP, + expectErr: true, + }, + { + name: "invalid-port-mapping", + tcp: []string{"8080:-abc"}, + clusterip: "None", + serviceType: v1.ServiceTypeClusterIP, + expectErr: true, + }, { expectErr: true, },