Skip to content

Commit 1d0ef3a

Browse files
committed
fix: correctly sanitize ips for ACLs
1 parent 425a16e commit 1d0ef3a

1 file changed

Lines changed: 18 additions & 9 deletions

File tree

scaleway/loadbalancers.go

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121
"errors"
2222
"fmt"
23+
"net"
2324
"os"
2425
"reflect"
2526
"strconv"
@@ -1858,10 +1859,26 @@ func makeACLSpecs(service *v1.Service, nodes []*v1.Node, frontend *scwlb.Fronten
18581859
return []*scwlb.ACLSpec{}
18591860
}
18601861

1862+
sourceRanges := make([]string, 0, len(service.Spec.LoadBalancerSourceRanges))
1863+
for _, sourceRange := range service.Spec.LoadBalancerSourceRanges {
1864+
if _, _, err := net.ParseCIDR(sourceRange); err != nil {
1865+
klog.Warningf("ignoring invalid CIDR %s in LoadBalancerSourceRanges for service %s/%s: %v", sourceRange, service.Namespace, service.Name, err)
1866+
continue
1867+
}
1868+
1869+
if strings.Contains(sourceRange, ":") {
1870+
sourceRange = strings.TrimSuffix(sourceRange, "/128")
1871+
} else {
1872+
sourceRange = strings.TrimSuffix(sourceRange, "/32")
1873+
}
1874+
1875+
sourceRanges = append(sourceRanges, sourceRange)
1876+
}
1877+
18611878
aclPrefix := makeACLPrefix(frontend)
18621879
whitelist := extractNodesInternalIps(nodes)
18631880
whitelist = append(whitelist, extractNodesExternalIps(nodes)...)
1864-
whitelist = append(whitelist, strip32SubnetMasks(service.Spec.LoadBalancerSourceRanges)...)
1881+
whitelist = append(whitelist, sourceRanges...)
18651882

18661883
slices.Sort(whitelist)
18671884

@@ -1895,14 +1912,6 @@ func makeACLSpecs(service *v1.Service, nodes []*v1.Node, frontend *scwlb.Fronten
18951912
return acls
18961913
}
18971914

1898-
func strip32SubnetMasks(subnets []string) []string {
1899-
stripped := make([]string, len(subnets))
1900-
for idx, subnet := range subnets {
1901-
stripped[idx] = strings.TrimSuffix(subnet, "/32")
1902-
}
1903-
return stripped
1904-
}
1905-
19061915
func ptrInt32ToString(i *int32) string {
19071916
if i == nil {
19081917
return "<nil>"

0 commit comments

Comments
 (0)