diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm
index 22f5a05cb..8e2e30ca3 100755
--- a/fhem/FHEM/01_FHEMWEB.pm
+++ b/fhem/FHEM/01_FHEMWEB.pm
@@ -18,6 +18,7 @@ sub FW_doDetail($);
sub FW_dumpFileLog($$$);
sub FW_fatal($);
sub FW_fileList($);
+sub FW_htmlEscape($);
sub FW_logWrapper($);
sub FW_makeEdit($$$);
sub FW_makeImage($);
@@ -601,7 +602,7 @@ FW_answerCall($)
if($FW_cmdret) {
$FW_detail = "";
$FW_room = "";
- $FW_cmdret =~ s/</g;
+ $FW_cmdret = FW_htmlEscape($FW_cmdret);
$FW_cmdret =~ s/>/>/g;
FW_pO "
";
$FW_cmdret = "
$FW_cmdret
" if($FW_cmdret =~ m/\n/);
@@ -738,6 +739,7 @@ FW_makeTable($$@)
FW_pO "
$n | ";
if(ref($val)) {
my ($v, $t) = ($val->{VAL}, $val->{TIME});
+ $v = FW_htmlEscape($v);
if($FW_ss) {
$t = ($t ? "
$t
" : "");
FW_pO "
$v$t | ";
@@ -749,6 +751,7 @@ FW_makeTable($$@)
}
} else {
+ $val = FW_htmlEscape($val);
FW_pO "
$val | ";
}
@@ -1346,8 +1349,7 @@ FW_logWrapper($)
}
my $cnt = join("", reverse
);
close(FH);
- $cnt =~ s/</g;
- $cnt =~ s/>/>/g;
+ $cnt = FW_htmlEscape($cnt);
FW_pO $cnt;
FW_pO $suffix;
@@ -2646,6 +2648,15 @@ FW_closeOldClients()
InternalTimer($now+60, "FW_closeOldClients", 0, 0);
}
+sub
+FW_htmlEscape($)
+{
+ my ($txt) = @_;
+ $txt =~ s/</g;
+ $txt =~ s/>/>/g;
+ return $txt;
+}
+
1;
=pod