From: Ton Voon Date: Fri, 21 Jan 2011 13:14:33 +0000 (+0000) Subject: Fix for regex input of '|', being output causing problems with Nagios' parsing of X-Git-Url: https://git.tokkee.org/?p=nagiosplug.git;a=commitdiff_plain;h=1a5a83bb82c35d888229fe9f815fbc663c0f4d3c Fix for regex input of '|', being output causing problems with Nagios' parsing of performance data. Now replaced with ',' --- diff --git a/NEWS b/NEWS index aca6218..540e0cf 100644 --- a/NEWS +++ b/NEWS @@ -11,6 +11,7 @@ This file documents the major additions and syntax changes between releases. check_disk_smb now handles NT_STATUS_ACCESS_DENIED properly (Debian #601696) Make check_snmp work more like v1.4.14 with regard to using special values (Timeticks, STRING) as numeric thresholds Fix check_ldap overriding the port when --ssl was specified after -p + Fix check_procs where regex input of '|' would get displayed in output - now replaced with ',' 1.4.15 27th July 2010 ENHANCEMENTS diff --git a/plugins/check_procs.c b/plugins/check_procs.c index 2151fb3..d875a61 100644 --- a/plugins/check_procs.c +++ b/plugins/check_procs.c @@ -318,6 +318,8 @@ process_arguments (int argc, char **argv) int err; int cflags = REG_NOSUB | REG_EXTENDED; char errbuf[MAX_INPUT_BUFFER]; + char *temp_string; + int i=0; static struct option longopts[] = { {"warning", required_argument, 0, 'w'}, {"critical", required_argument, 0, 'c'}, @@ -450,7 +452,14 @@ process_arguments (int argc, char **argv) regerror (err, &re_args, errbuf, MAX_INPUT_BUFFER); die (STATE_UNKNOWN, "PROCS %s: %s - %s\n", _("UNKNOWN"), _("Could not compile regular expression"), errbuf); } - asprintf (&fmt, "%s%sregex args '%s'", (fmt ? fmt : ""), (options ? ", " : ""), optarg); + /* Strip off any | within the regex optarg */ + temp_string = strdup(optarg); + while(temp_string[i]!='\0'){ + if(temp_string[i]=='|') + temp_string[i]=','; + i++; + } + asprintf (&fmt, "%s%sregex args '%s'", (fmt ? fmt : ""), (options ? ", " : ""), temp_string); options |= EREG_ARGS; break; case 'r': /* RSS */ diff --git a/plugins/tests/check_procs.t b/plugins/tests/check_procs.t index 1d0c034..d71c83a 100644 --- a/plugins/tests/check_procs.t +++ b/plugins/tests/check_procs.t @@ -8,7 +8,7 @@ use Test::More; use NPTest; if (-x "./check_procs") { - plan tests => 48; + plan tests => 50; } else { plan skip_all => "No check_procs compiled"; } @@ -113,3 +113,7 @@ $result = NPTest->testCmd( "$command --metric=RSS -c 70000 -v" ); is( $result->return_code, 2, "Checking against RSS > 70MB" ); is( $result->output, 'RSS CRITICAL: 5 crit, 0 warn out of 95 processes [WindowServer, SystemUIServer, Safari, Mail, Safari]', "Output correct" ); +$result = NPTest->testCmd( "$command --ereg-argument-array='(nosuchname|nosuch2name)'" ); +is( $result->return_code, 0, "Checking no pipe symbol in output" ); +is( $result->output, "PROCS OK: 0 processes with regex args '(nosuchname,nosuch2name)'", "Output correct" ); +