From: Michael Tremer Date: Wed, 5 Mar 2014 12:59:28 +0000 (+0100) Subject: firewall: Allow remarks in Unicode. X-Git-Url: http://git.ipfire.org/?p=people%2Fteissler%2Fipfire-2.x.git;a=commitdiff_plain;h=323923d912cb86fd2e89326aa61bad06bf05d6dd firewall: Allow remarks in Unicode. --- diff --git a/html/cgi-bin/firewall.cgi b/html/cgi-bin/firewall.cgi index e633b3c5c..7bcb07964 100644 --- a/html/cgi-bin/firewall.cgi +++ b/html/cgi-bin/firewall.cgi @@ -21,7 +21,11 @@ use strict; use Sort::Naturally; +use utf8; +use feature 'unicode_strings'; + no warnings 'uninitialized'; + # enable only the following on debugging purpose #use warnings; #use CGI::Carp 'fatalsToBrowser'; @@ -2142,6 +2146,7 @@ sub saverule #print"6"; } $fwdfwsettings{'ruleremark'}=~ s/,/;/g; + utf8::decode($fwdfwsettings{'ruleremark'}); $fwdfwsettings{'ruleremark'}=&Header::escape($fwdfwsettings{'ruleremark'}); if ($fwdfwsettings{'updatefwrule'} ne 'on'){ my $key = &General::findhasharraykey ($hash); @@ -2279,6 +2284,14 @@ sub validremark { # Checks a hostname against RFC1035 my $remark = $_[0]; + + # Try to decode $remark into UTF-8. If this doesn't work, + # we assume that the string it not sane. + if (!utf8::decode($remark)) { + return 0; + } + + # Check if the string only contains of printable characters. if ($remark =~ /^[[:print:]]*$/) { return 1; }