diff --git a/fhem/CHANGED b/fhem/CHANGED index bdbcaad64..09d04767d 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - bugfix: 73_NUKIBridge/74_NUKIDevice: decode_json() in a eval - Update: 73_AMADCommBridge/74AMADDevice: 4.2 new Version with Tasker Support - bugfix: 14_CUL_TCM97001: Fix temperature reading - bugfix: 49_SSCam: V3.3.0, code review, API bug fix of runview lastrec, diff --git a/fhem/FHEM/73_NUKIBridge.pm b/fhem/FHEM/73_NUKIBridge.pm index 8b859dfa6..3d64b3c06 100644 --- a/fhem/FHEM/73_NUKIBridge.pm +++ b/fhem/FHEM/73_NUKIBridge.pm @@ -46,7 +46,7 @@ use JSON; use HttpUtils; -my $version = "0.6.1"; +my $version = "0.6.2"; my $bridgeapi = "1.5"; @@ -476,8 +476,12 @@ sub NUKIBridge_ResponseProcessing($$$) { Log3 $name, 3, "NUKIBridge ($name) - invalid json detected: $json"; return "NUKIBridge ($name) - invalid json detected: $json"; } - - $decode_json = decode_json($json); + + my $decode_json = eval{decode_json($json)}; + if($@){ + Log3 $name, 3, "NUKIBridge ($name) - JSON error while request: $@"; + return; + } if( ref($decode_json) eq "ARRAY" and scalar(@{$decode_json}) > 0 and $path eq "list" ) { @@ -744,8 +748,12 @@ sub NUKIBridge_CallBlocking($$$) { return "NUKIDevice ($name) - invalid json detected for $url: $data"; } - - my $decode_json = decode_json($data); + + my $decode_json = eval{decode_json($data)}; + if($@){ + Log3 $name, 3, "NUKIBridge ($name) - JSON error while request: $@"; + return; + } return undef if( !$decode_json ); diff --git a/fhem/FHEM/74_NUKIDevice.pm b/fhem/FHEM/74_NUKIDevice.pm index 6f6cb3f3d..de2e5eb2f 100644 --- a/fhem/FHEM/74_NUKIDevice.pm +++ b/fhem/FHEM/74_NUKIDevice.pm @@ -33,7 +33,7 @@ use warnings; use JSON; -my $version = "0.6.1"; +my $version = "0.6.2"; @@ -414,7 +414,11 @@ sub NUKIDevice_Parse($$) { ######################################### #### verarbeiten des JSON Strings ####### - my $decode_json = decode_json($result); + my $decode_json = eval{decode_json($result)}; + if($@){ + Log3 $name, 3, "NUKIDevice ($name) - JSON error while request: $@"; + return; + } if( ref($decode_json) ne "HASH" ) { @@ -526,8 +530,12 @@ sub NUKIDevice_CGI() { Log3 $name, 3, "NUKIDevice ($name) - invalid json detected: $json"; return "NUKIDevice ($name) - invalid json detected: $json"; } - - my $decode_json = decode_json($json); + + my $decode_json = eval{decode_json($json)}; + if($@){ + Log3 $name, 3, "NUKIDevice ($name) - JSON error while request: $@"; + return; + } if( ref($decode_json) eq "HASH" ) {