From 52da4476458a2783ab8863a5bebd26f45c6cd428 Mon Sep 17 00:00:00 2001 From: ramonn Date: Mon, 25 Oct 2010 17:29:11 +0000 Subject: [PATCH] 2010-10-25 Ramon Novoa * lib/PandoraFMS/Core.pm: Fixed a bug that made the server crash when trying to match an alert with an invalid regular expression. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@3463 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_server/ChangeLog | 5 +++++ pandora_server/lib/PandoraFMS/Core.pm | 14 ++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/pandora_server/ChangeLog b/pandora_server/ChangeLog index 2327455d4c..7d54e6ef5e 100644 --- a/pandora_server/ChangeLog +++ b/pandora_server/ChangeLog @@ -1,3 +1,8 @@ +2010-10-25 Ramon Novoa + + * lib/PandoraFMS/Core.pm: Fixed a bug that made the server crash when + trying to match an alert with an invalid regular expression. + 2010-10-25 Sergio Martin * util/pandora_manage.pl: Change a Warning notice to diff --git a/pandora_server/lib/PandoraFMS/Core.pm b/pandora_server/lib/PandoraFMS/Core.pm index 4fa05b090d..8bb3a8971e 100644 --- a/pandora_server/lib/PandoraFMS/Core.pm +++ b/pandora_server/lib/PandoraFMS/Core.pm @@ -294,10 +294,16 @@ sub pandora_evaluate_alert ($$$$$$$) { return $status if ($alert->{'type'} eq "equal" && $data != $alert->{'value'}); return $status if ($alert->{'type'} eq "not_equal" && $data == $alert->{'value'}); if ($alert->{'type'} eq "regex") { - if ($alert->{'matches_value'} == 1) { - return $status if ($data !~ m/$alert->{'value'}/i); - } else { - return $status if ($data =~ m/$alert->{'value'}/i); + eval { + local $SIG{'__DIE__'}; + if ($alert->{'matches_value'} == 1) { + return $status if ($data !~ m/$alert->{'value'}/i); + } else { + return $status if ($data =~ m/$alert->{'value'}/i); + } + }; + if ($@) { + logger ($pa_config, "Error evaluating alert '" . $alert->{'name'} . "' for agent '" . $agent->{'nombre'} . "': '" . $alert->{'value'} . "' is not a valid regular expression.", 10); } }