mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-26 02:42:58 +02:00
firewall: Fix perl coding error.
Example:
my @as = (1, 2, 3);
foreach my $a (@as) {
$a += 1;
print "$a\n";
}
$a will be a reference to the number in the array and not
copied. Therefore $a += 1 will change the numbers in the
array as well, so that after the loop the content of @as
would be (2, 3, 4).
To avoid that, the number needs to be copied into a new
variable like: my $b = $a; and we are fine.
This caused that the content of the @sources and @destinations
array has been altered for the second run of the loop and
incorrect (i.e. no) rules were created.
This commit is contained in:
@@ -254,17 +254,22 @@ sub buildrules {
|
||||
# Check if this protocol knows ports.
|
||||
my $protocol_has_ports = ($protocol ~~ @PROTOCOLS_WITH_PORTS);
|
||||
|
||||
foreach my $source (@sources) {
|
||||
foreach my $destination (@destinations) {
|
||||
# Skip invalid rules.
|
||||
next if (!$source || !$destination || ($destination eq "none"));
|
||||
foreach my $src (@sources) {
|
||||
# Skip invalid source.
|
||||
next unless ($src);
|
||||
|
||||
# Sanitize source.
|
||||
if ($source ~~ @ANY_ADDRESSES) {
|
||||
$source = "";
|
||||
}
|
||||
# Sanitize source.
|
||||
my $source = $src;
|
||||
if ($source ~~ @ANY_ADDRESSES) {
|
||||
$source = "";
|
||||
}
|
||||
|
||||
foreach my $dst (@destinations) {
|
||||
# Skip invalid rules.
|
||||
next if (!$dst || ($dst eq "none"));
|
||||
|
||||
# Sanitize destination.
|
||||
my $destination = $dst;
|
||||
if ($destination ~~ @ANY_ADDRESSES) {
|
||||
$destination = "";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user