]> git.proxmox.com Git - pve-firewall.git/commitdiff
parse_address_list: make sure we only have one type of addresses (ipv4 or ipv6)
authorDietmar Maurer <dietmar@proxmox.com>
Thu, 30 Oct 2014 11:58:09 +0000 (12:58 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 30 Oct 2014 12:17:24 +0000 (13:17 +0100)
src/PVE/Firewall.pm

index ad52ee724163533760ce4a55398d5c15992ac237..37dbcb0acf57c11e6a739762abd7a144b1286da8 100644 (file)
@@ -802,7 +802,7 @@ sub parse_address_list {
 
     my $count = 0;
     my $iprange = 0;
-    my $ipversion = undef;
+    my $ipversion;
 
     foreach my $elem (split(/,/, $str)) {
        $count++;
@@ -811,10 +811,17 @@ sub parse_address_list {
            die "invalid IP address: $err\n";
        }
        $iprange = 1 if $elem =~ m/-/;
-       $ipversion = Net::IP::ip_get_version($elem); #fixme : don't work with range
+
+       my $new_ipversion = Net::IP::ip_get_version($elem); #fixme : don't work with range
+
+       die "detected mixed ipv4/ipv6 addresses in address list '$str'\n"
+           if defined($ipversion) && ($new_ipversion != $ipversion);
+
+       $ipversion = $new_ipversion;
     }
 
     die "you can't use a range in a list\n" if $iprange && $count > 1;
+
     return $ipversion;
 }