[nagiosplug] Fix for regex input of '|', being output causing ...
Ton Voon
tonvoon at users.sourceforge.net
Fri Jan 21 14:15:55 CET 2011
Module: nagiosplug
Branch: master
Commit: 1a5a83bb82c35d888229fe9f815fbc663c0f4d3c
Author: Ton Voon <ton.voon at opsera.com>
Date: Fri Jan 21 13:14:33 2011 +0000
URL: http://nagiosplug.git.sf.net/git/gitweb.cgi?p=nagiosplug/nagiosplug;a=commit;h=1a5a83b
Fix for regex input of '|', being output causing problems with Nagios' parsing of
performance data. Now replaced with ','
---
NEWS | 1 +
plugins/check_procs.c | 11 ++++++++++-
plugins/tests/check_procs.t | 6 +++++-
3 files changed, 16 insertions(+), 2 deletions(-)
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" );
+
More information about the Commits
mailing list