From 081d78f635cb0a0b37d9de109dc7ab865cad83c2 Mon Sep 17 00:00:00 2001 From: chymy Date: Mon, 18 Jan 2021 15:22:01 +0800 Subject: [PATCH] kubeadm: APIEndpointFromString verifies ip Signed-off-by: chymy --- cmd/kubeadm/app/apis/kubeadm/apiendpoint.go | 3 +++ cmd/kubeadm/app/apis/kubeadm/apiendpoint_test.go | 2 ++ 2 files changed, 5 insertions(+) diff --git a/cmd/kubeadm/app/apis/kubeadm/apiendpoint.go b/cmd/kubeadm/app/apis/kubeadm/apiendpoint.go index 99492e117369..50be2a813ede 100644 --- a/cmd/kubeadm/app/apis/kubeadm/apiendpoint.go +++ b/cmd/kubeadm/app/apis/kubeadm/apiendpoint.go @@ -29,6 +29,9 @@ func APIEndpointFromString(apiEndpoint string) (APIEndpoint, error) { if err != nil { return APIEndpoint{}, errors.Wrapf(err, "invalid advertise address endpoint: %s", apiEndpoint) } + if net.ParseIP(apiEndpointHost) == nil { + return APIEndpoint{}, errors.Errorf("invalid API endpoint IP: %s", apiEndpointHost) + } apiEndpointPort, err := net.LookupPort("tcp", apiEndpointPortStr) if err != nil { return APIEndpoint{}, errors.Wrapf(err, "invalid advertise address endpoint port: %s", apiEndpointPortStr) diff --git a/cmd/kubeadm/app/apis/kubeadm/apiendpoint_test.go b/cmd/kubeadm/app/apis/kubeadm/apiendpoint_test.go index c171caa512c1..2c903b5b3ff7 100644 --- a/cmd/kubeadm/app/apis/kubeadm/apiendpoint_test.go +++ b/cmd/kubeadm/app/apis/kubeadm/apiendpoint_test.go @@ -31,10 +31,12 @@ func TestAPIEndpointFromString(t *testing.T) { {apiEndpoint: "1.2.3.4:-1", expectedErr: true}, {apiEndpoint: "1.2.::1234", expectedErr: true}, {apiEndpoint: "1.2.3.4:65536", expectedErr: true}, + {apiEndpoint: "1.2.3.456:1234", expectedErr: true}, {apiEndpoint: "[::1]:1234", expectedEndpoint: APIEndpoint{AdvertiseAddress: "::1", BindPort: 1234}}, {apiEndpoint: "[::1]:-1", expectedErr: true}, {apiEndpoint: "[::1]:65536", expectedErr: true}, {apiEndpoint: "[::1:1234", expectedErr: true}, + {apiEndpoint: "[::g]:1234", expectedErr: true}, } for _, rt := range tests { t.Run(rt.apiEndpoint, func(t *testing.T) {