From 7baa1839cfebb038b115e7b08ef89a5d50a064c5 Mon Sep 17 00:00:00 2001 From: Tom Eastep Date: Mon, 20 Sep 2010 07:24:22 -0700 Subject: [PATCH] Tighen up parsing of bracketed lists -- Take 2 --- Shorewall/Perl/Shorewall/Chains.pm | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/Shorewall/Perl/Shorewall/Chains.pm b/Shorewall/Perl/Shorewall/Chains.pm index 5e7369ad3..488422046 100644 --- a/Shorewall/Perl/Shorewall/Chains.pm +++ b/Shorewall/Perl/Shorewall/Chains.pm @@ -2883,7 +2883,7 @@ sub addnatjump( $$$ ) { # # Split a comma-separated source or destination host list but keep [...] together. Used for spliting address lists -# where an element of the list might be +ipset[binding]. +# where an element of the list might be +ipset[flag,...] or +[ipset[flag,...],...] # sub mysplit( $ ) { my @input = split_list $_[0], 'host'; @@ -2897,15 +2897,11 @@ sub mysplit( $ ) { if ( $element =~ /\[/ ) { while ( $element =~ tr/[/[/ > $element =~ tr/]/]/ ) { - last unless @input; + fatal_error "Missing ']' ($element)" unless @input; $element .= ( ',' . shift @input ); } - if ( $element =~ tr/[/[/ > $element =~ tr/]/]/ ) { - fatal_error "Missing ']' ($element)"; - } else { - fatal_error "Mismatched [...] ($element)" unless $element =~ tr/[/[/ == $element =~ tr/]/]/; - } + fatal_error "Mismatched [...] ($element)" unless $element =~ tr/[/[/ == $element =~ tr/]/]/; } push @result, $element;