]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/commitdiff
Firewall: FIX allowed chars in remark
authorAlexander Marx <alexander.marx@ipfire.org>
Tue, 4 Mar 2014 14:44:02 +0000 (15:44 +0100)
committerAlexander Marx <alexander.marx@ipfire.org>
Tue, 4 Mar 2014 14:44:02 +0000 (15:44 +0100)
html/cgi-bin/firewall.cgi

index e1573acdb654d53ac858181c4dae8f7d3d246611..3eac4f9d614db8d5684d65a4379938a7860c8a8c 100644 (file)
@@ -194,6 +194,7 @@ if ($fwdfwsettings{'ACTION'} eq 'saverule')
        $errormessage=&checksource;
        if(!$errormessage){&checktarget;}
        if(!$errormessage){&checkrule;}
        $errormessage=&checksource;
        if(!$errormessage){&checktarget;}
        if(!$errormessage){&checkrule;}
+
        #check if manual ip (source) is orange network
        if ($fwdfwsettings{'grp1'} eq 'src_addr'){
                my ($sip,$scidr) = split("/",$fwdfwsettings{$fwdfwsettings{'grp1'}});
        #check if manual ip (source) is orange network
        if ($fwdfwsettings{'grp1'} eq 'src_addr'){
                my ($sip,$scidr) = split("/",$fwdfwsettings{$fwdfwsettings{'grp1'}});
@@ -307,6 +308,9 @@ if ($fwdfwsettings{'ACTION'} eq 'saverule')
                                                if($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && !&validremark($fwdfwsettings{'ruleremark'})){
                                                        $errormessage=$Lang::tr{'fwdfw err remark'}."<br>";
                                                }
                                                if($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && !&validremark($fwdfwsettings{'ruleremark'})){
                                                        $errormessage=$Lang::tr{'fwdfw err remark'}."<br>";
                                                }
+                                               if($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && &validremark($fwdfwsettings{'ruleremark'})){
+                                                       $errormessage='';
+                                               }
                                                if ($fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'}){
                                                        $fwdfwsettings{'nosave'} = 'on';
                                                }
                                                if ($fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'}){
                                                        $fwdfwsettings{'nosave'} = 'on';
                                                }
@@ -2125,6 +2129,7 @@ sub saverule
                        &changerule($configfwdfw);
                        #print"6";
                }
                        &changerule($configfwdfw);
                        #print"6";
                }
+               $fwdfwsettings{'ruleremark'}=&Header::escape($fwdfwsettings{'ruleremark'});
                if ($fwdfwsettings{'updatefwrule'} ne 'on'){
                        my $key = &General::findhasharraykey ($hash);
                        $$hash{$key}[0]  = $fwdfwsettings{'RULE_ACTION'};
                if ($fwdfwsettings{'updatefwrule'} ne 'on'){
                        my $key = &General::findhasharraykey ($hash);
                        $$hash{$key}[0]  = $fwdfwsettings{'RULE_ACTION'};
@@ -2260,22 +2265,12 @@ sub saverule
 sub validremark
 {
        # Checks a hostname against RFC1035
 sub validremark
 {
        # Checks a hostname against RFC1035
-        my $remark = $_[0];
-
-       # Each part should be at least two characters in length
-       # but no more than 63 characters
-       if (length ($remark) < 1 || length ($remark) > 255) {
-               return 0;}
-       # Only valid characters are a-z, A-Z, 0-9 and -
-       if ($remark !~ /^[a-zäöüA-ZÖÄÜ0-9-.:;\|_()\/\s]*$/) {
-               return 0;}
-       # First character can only be a letter or a digit
-       if (substr ($remark, 0, 1) !~ /^[a-zäöüA-ZÖÄÜ0-9(]*$/) {
-               return 0;}
-       # Last character can only be a letter or a digit
-       if (substr ($remark, -1, 1) !~ /^[a-zöäüA-ZÖÄÜ0-9.:;_)]*$/) {
-               return 0;}
-       return 1;
+       my $remark = $_[0];
+       $remark =~ s/,/;/g;
+       if ($remark =~ /^[[:print:]]*$/) {
+               return 1;
+       }
+       return 0;
 }
 sub viewtablerule
 {
 }
 sub viewtablerule
 {