From b01acf830790303179728424d1d54c5ec9e3eeb0 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Wed, 14 Jan 2015 07:16:35 +0000 Subject: [PATCH] FHEMWEB.pm: better JSON Escaping git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@7562 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/01_FHEMWEB.pm | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index fc1a9275d..058c70995 100755 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -2207,14 +2207,23 @@ FW_makeEdit($$$) } +my %jsTab = ( + '\\' => '\\\\', + '"' => '\\"', + '\t' => '\\t', + '\r' => '\\r', + '\n' => '\\n', + '\b' => '\\b', + '\v' => '\\v' +); sub FW_longpollInfo($$$$) { my ($dev, $state, $html, $fmt) = @_; if($fmt && $fmt eq "JSON") { - $dev =~ s/([\\"])/\\$1/g; - $state =~ s/([\\"])/\\$1/g; - $html =~ s/([\\"])/\\$1/g; + $dev =~ s/([\\"\t\r\n\b\v])/$jsTab{$1}/ge; + $state =~ s/([\\"\t\r\n\b\v])/$jsTab{$1}/ge; + $html =~ s/([\\"\t\r\n\b\v])/$jsTab{$1}/ge; return "[\"$dev\",\"$state\",\"$html\"]"; } else { return "$dev<<$state<<$html";