Autor Thema: Fehlerhafter Regex zieht FHEM in den Abgrund  (Gelesen 264 mal)

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1127
  • Maintainer von 12 Modulen + holiday-Files
    • Private Website
Fehlerhafter Regex zieht FHEM in den Abgrund
« am: 11 Mai 2020, 02:44:41 »
Es ist spät/früh und man sollte aufpassen was man tut:
DOELSEIF
(
            [out.seat_covers.dummy:state] eq q{on}
        and ["out.irigation.valves.channel.(?:[01])"":state] eq "on"
)
(
    msg Die Bewässerung auf der Südseite ist aktiviert und die Bezüge sind draußen!
)

Das ist ein Ausschnitt aus einem fehlerhaften DOIF, da sind zwei " hintereinander, wo nur eins sein sollte (Danke, IDE).
Das führte zu folgendem Log und FHEM starb.

2020.05.11 02:39:25.056 1: ERROR evaluating my $TYPE='Global';my $EVTPART1='out.seat_covers.alert';my $EVENT='MODIFIED out.seat_covers.alert';my $EVTPART0='MODIFIED';my $NAME='global';my $SELF='general.system.changelog.system';{fhem("trigger $SELF change: ".lc("$EVENT"))}: Unmatched ( in regex; marked by <-- HERE in m/^global$|^general.weather.station.sensor_5.rainfall$|out.irigation.valves.channel.( <-- HERE ?|^out.seat_covers.dummy$|^general.weather.forecast.buienradar$/ at ./FHEM/98_DOIF.pm line 2529.

2020.05.11 02:39:25.056 3: general.system.changelog.system return value: Unmatched ( in regex; marked by <-- HERE in m/^global$|^general.weather.station.sensor_5.rainfall$|out.irigation.valves.channel.( <-- HERE ?|^out.seat_covers.dummy$|^general.weather.forecast.buienradar$/ at ./FHEM/98_DOIF.pm line 2529.

Unmatched ( in regex; marked by <-- HERE in m/^global$|^general.weather.station.sensor_5.rainfall$|out.irigation.valves.channel.( <-- HERE ?|^out.seat_covers.dummy$|^general.weather.forecast.buienradar$/ at ./FHEM/98_DOIF.pm line 2529.

Eher unschön, dass FHEM dann stirbt. Habt ihr eine Idee, wie man sowas abfangen könnte?
« Letzte Änderung: 26 Mai 2020, 18:06:35 von Christoph Morrison »
Maintainer von:
holidays · 59_Twilight · contrib/sacha_gloor · Buienradar

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22328
Antw:Fehlerhafter Regex zieht FHEM in den Abgrund
« Antwort #1 am: 11 Mai 2020, 09:39:18 »
notify (und 10 weitere Module) prueft bei der Definition per perlSyntaxCheck(), ob der Ausdruck Syntaxfehler enthaelt.

Die Funktion besteht im Wesentlichen aus eval { return; <perlcode> }, weiss nicht, ob was Vergleichbares bei DOIF gemacht wird bzw. machbar waere.

 

decade-submarginal