From: Adolf Belka Date: Mon, 11 Mar 2024 12:19:09 +0000 (+0100) Subject: dns.cgi: Fixes bug#12395 - German umlauts not correctly displayed in remarks X-Git-Tag: v2.29-core185~96 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=716b8fb503b5c02ac921cd843f8c646892c4cf55;p=ipfire-2.x.git dns.cgi: Fixes bug#12395 - German umlauts not correctly displayed in remarks - If Freifunk München e.V. is entered as a remark it gets converted to Freifunk München e.V. - This is because cleanhtml is used on the UTF-8 remark text before saving it to the file and the HTML::Entities::encode_entities command that is run on that remark text does not work with UTF-8 text. - If the UTF-8 text in the remark is decoded before running through the cleanhtml command then the characters with diacritical marks are correctly shown. - Have tested out the fix on a remark with a range of different characters with diacritical marks and all of the ones tested were displayed correctly with the fix while in the original form they were mangled. Fixes: Bug#12395 Tested-by: Adolf Belka Signed-off-by: Adolf Belka Signed-off-by: Michael Tremer --- diff --git a/html/cgi-bin/dns.cgi b/html/cgi-bin/dns.cgi index 0a34d3fd6c..eb6f908d50 100644 --- a/html/cgi-bin/dns.cgi +++ b/html/cgi-bin/dns.cgi @@ -142,6 +142,13 @@ if (($cgiparams{'SERVERS'} eq $Lang::tr{'save'}) || ($cgiparams{'SERVERS'} eq $L # Go further if there was no error. if ( ! $errormessage) { # Check if a remark has been entered. + + # decode the UTF-8 text so that characters with diacritical marks such as + # umlauts are treated correctly by the following cleanhtml command + $cgiparams{'REMARK'} = decode("UTF-8", $cgiparams{'REMARK'}); + + # run the REMARK text through cleanhtml to ensure all unsafe html characters + # are correctly encoded to their html entities $cgiparams{'REMARK'} = &Header::cleanhtml($cgiparams{'REMARK'}); my %dns_servers = ();