From dead235d8de8ee652cbcf2a57c06c8507ad1d6eb Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Mon, 24 Apr 2017 07:44:26 +0000 Subject: [PATCH] fhem.pl: guard regexp errors for event-on-* (Forum #71020) git-svn-id: https://svn.fhem.de/fhem/trunk@14093 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/fhem.pl | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/fhem/fhem.pl b/fhem/fhem.pl index 6ee359ae5..a1934773e 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -2720,10 +2720,20 @@ CommandAttr($$) } } - if($attrName eq "suppressReading") { - return "Argument must be a valid regexp" if(!$a[2] || $a[2] =~ /^\*/); - eval { "Hallo" =~ m/^$a[2]$/ }; - return "Bad regexp: $@" if($@); + my %ra = ("suppressReading" => 1, + "event-on-update-reading" => 1, + "event-on-change-reading" => 2, + "timestamp-on-change-reading"=> 1, + "event-min-interval" => 2); + if(defined($a[2]) && $ra{$attrName}) { + my $lval = $a[2]; + $lval =~ s/:.*// if($ra{$attrName} == 2); + for my $v (split(",", $lval)) { + my $err = "Argument $v for attr $sdev $a[1] is not a valid regexp"; + return "$err: use .* instead of *" if($v =~ /^\*/); # no err in eval!? + eval { "Hallo" =~ m/^$v$/ }; + return "$err: $@" if($@); + } } $ret = CallFn($sdev, "AttrFn", "set", @a);