From 80b5f0e7f78f09a11ed249f9f1dc7b05ea275ab0 Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Thu, 26 Aug 2021 00:03:12 +0300 Subject: [PATCH] fix: validate IP address returned as HTTP response in platform code If provider returns empty response, it is parsed as `nil` IP address and included in the response which leads to `` entries in the machine configuration after applying dynamic config. Signed-off-by: Andrey Smirnov --- .../app/machined/pkg/runtime/v1alpha1/platform/aws/aws.go | 4 +++- .../runtime/v1alpha1/platform/digitalocean/digitalocean.go | 4 +++- .../pkg/runtime/v1alpha1/platform/openstack/openstack.go | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/internal/app/machined/pkg/runtime/v1alpha1/platform/aws/aws.go b/internal/app/machined/pkg/runtime/v1alpha1/platform/aws/aws.go index 22fe5f16c..433258ad4 100644 --- a/internal/app/machined/pkg/runtime/v1alpha1/platform/aws/aws.go +++ b/internal/app/machined/pkg/runtime/v1alpha1/platform/aws/aws.go @@ -202,7 +202,9 @@ func (a *AWS) ExternalIPs(ctx context.Context) (addrs []net.IP, err error) { return } - addrs = append(addrs, net.ParseIP(string(body))) + if addr := net.ParseIP(string(body)); addr != nil { + addrs = append(addrs, addr) + } return addrs, err } diff --git a/internal/app/machined/pkg/runtime/v1alpha1/platform/digitalocean/digitalocean.go b/internal/app/machined/pkg/runtime/v1alpha1/platform/digitalocean/digitalocean.go index de1f5e9d6..969cf8e6c 100644 --- a/internal/app/machined/pkg/runtime/v1alpha1/platform/digitalocean/digitalocean.go +++ b/internal/app/machined/pkg/runtime/v1alpha1/platform/digitalocean/digitalocean.go @@ -99,7 +99,9 @@ func (d *DigitalOcean) ExternalIPs(ctx context.Context) (addrs []net.IP, err err return } - addrs = append(addrs, net.ParseIP(string(body))) + if addr := net.ParseIP(string(body)); addr != nil { + addrs = append(addrs, addr) + } return addrs, err } diff --git a/internal/app/machined/pkg/runtime/v1alpha1/platform/openstack/openstack.go b/internal/app/machined/pkg/runtime/v1alpha1/platform/openstack/openstack.go index 24a116ce6..b2f817d5e 100644 --- a/internal/app/machined/pkg/runtime/v1alpha1/platform/openstack/openstack.go +++ b/internal/app/machined/pkg/runtime/v1alpha1/platform/openstack/openstack.go @@ -101,7 +101,9 @@ func (a *Openstack) ExternalIPs(ctx context.Context) (addrs []net.IP, err error) return } - addrs = append(addrs, net.ParseIP(string(body))) + if addr := net.ParseIP(string(body)); addr != nil { + addrs = append(addrs, addr) + } return addrs, err }