diff --git a/Shorewall/Perl/Shorewall/Config.pm b/Shorewall/Perl/Shorewall/Config.pm index a1ddcb969..3720f9d8d 100644 --- a/Shorewall/Perl/Shorewall/Config.pm +++ b/Shorewall/Perl/Shorewall/Config.pm @@ -1840,13 +1840,16 @@ sub default_action_params { } } -sub get_action_params { +sub get_action_params( $ ) { + my $num = shift; + + fatal_error "Invalid argument to get_action_params()" unless $num =~ /^\d+$/; + my @values; - for ( @_ ) { - fatal_error "Parameter numbers must be numeric" unless $_ =~ /^\d+$/; - push @values, $actparms{$_}; - } + my $index = 1; + + push @values, $actparms{$index++} while $num-- > 0; @values; } diff --git a/Shorewall/action.Drop b/Shorewall/action.Drop index 921b9db22..9638bcb05 100644 --- a/Shorewall/action.Drop +++ b/Shorewall/action.Drop @@ -35,13 +35,13 @@ FORMAT 2 BEGIN PERL use Shorewall::Config; -my ($p1, $p2, $p3 ) = get_action_params(1, 2, 3, 4, 5); +my ( $p1, $p2, $p3 , $p4, $p5 ) = get_action_params( 5 ); if ( defined $p1 && $p1 eq 'audit' ) { - set_action_param( 2, 'A_REJECT') unless defined $p2; - set_action_param( 3, 'A_DROP') unless defined $p3; - set_action_param( 4, 'A_ACCEPT' ) unless defined $p4; - set_action_param( 5, 'A_DROP' ) unless defined $p5; + set_action_param( 2, 'A_REJECT') unless supplied $p2; + set_action_param( 3, 'A_DROP') unless supplied $p3; + set_action_param( 4, 'A_ACCEPT' ) unless supplied $p4; + set_action_param( 5, 'A_DROP' ) unless supplied $p5; }; 1; diff --git a/Shorewall/action.Reject b/Shorewall/action.Reject index 7923e08c3..e13733050 100644 --- a/Shorewall/action.Reject +++ b/Shorewall/action.Reject @@ -31,13 +31,13 @@ FORMAT 2 BEGIN PERL use Shorewall::Config; -my ( $p1, $p2, $p3 ) = get_action_params(1, 2, 3, 4, 5); +my ( $p1, $p2, $p3, $p4, $p5 ) = get_action_params( 5 ); if ( defined $p1 && $p1 eq 'audit' ) { - set_action_param( 2, 'A_REJECT') unless defined $p2; - set_action_param( 3, 'A_REJECT') unless defined $p3; - set_action_param( 4, 'A_ACCEPT' ) unless defined $p5; - set_action_param( 5, 'A_DROP' ) unless defined $p5; + set_action_param( 2, 'A_REJECT') unless supplied $p2; + set_action_param( 3, 'A_REJECT') unless supplied $p3; + set_action_param( 4, 'A_ACCEPT' ) unless supplied $p5; + set_action_param( 5, 'A_DROP' ) unless supplied $p5; }; 1;