summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTon Voon <ton.voon@opsera.com>2010-06-21 22:40:29 +0100
committerTon Voon <ton.voon@opsera.com>2010-06-21 22:40:29 +0100
commit10364a6004616c2e52852d80b1e1817056aa7119 (patch)
tree24ee913df772bd0b14b6e4e9252adc331aad20bb
parent72074a8f2e99d3a36899f7c5533f2bbe8c5e18cd (diff)
downloadmonitoring-plugins-10364a6004616c2e52852d80b1e1817056aa7119.tar.gz
Invalid chars in keyname now die()
-rw-r--r--lib/tests/test_utils.c12
-rw-r--r--lib/utils_base.c6
2 files changed, 13 insertions, 5 deletions
diff --git a/lib/tests/test_utils.c b/lib/tests/test_utils.c
index ce79fc64..4f761a6d 100644
--- a/lib/tests/test_utils.c
+++ b/lib/tests/test_utils.c
@@ -308,11 +308,19 @@ main (int argc, char **argv)
308 ok( !strcmp(temp_state_key->name, "83d877b6cdfefb5d6f06101fd6fe76762f21792c"), "Got generated filename" ); 308 ok( !strcmp(temp_state_key->name, "83d877b6cdfefb5d6f06101fd6fe76762f21792c"), "Got generated filename" );
309 309
310 310
311 np_enable_state("bad^chars$in@here", 77); 311 np_enable_state("allowedchars_in_keyname", 77);
312 temp_state_key = this_nagios_plugin->state; 312 temp_state_key = this_nagios_plugin->state;
313 ok( !strcmp(temp_state_key->plugin_name, "check_test"), "Got plugin name" ); 313 ok( !strcmp(temp_state_key->plugin_name, "check_test"), "Got plugin name" );
314 ok( !strcmp(temp_state_key->name, "allowedchars_in_keyname"), "Got key name with valid chars" );
315 ok( !strcmp(temp_state_key->_filename, "/usr/local/nagios/var/check_test/allowedchars_in_keyname"), "Got internal filename" );
316
317
318 /* Don't do this test just yet. Will die */
319 /*
320 np_enable_state("bad^chars$in@here", 77);
321 temp_state_key = this_nagios_plugin->state;
314 ok( !strcmp(temp_state_key->name, "bad_chars_in_here"), "Got key name with bad chars replaced" ); 322 ok( !strcmp(temp_state_key->name, "bad_chars_in_here"), "Got key name with bad chars replaced" );
315 ok( !strcmp(temp_state_key->_filename, "/usr/local/nagios/var/check_test/bad_chars_in_here"), "Got internal filename" ); 323 */
316 324
317 np_enable_state("funnykeyname", 54); 325 np_enable_state("funnykeyname", 54);
318 temp_state_key = this_nagios_plugin->state; 326 temp_state_key = this_nagios_plugin->state;
diff --git a/lib/utils_base.c b/lib/utils_base.c
index 70279178..4e8d2ef7 100644
--- a/lib/utils_base.c
+++ b/lib/utils_base.c
@@ -432,11 +432,11 @@ void np_enable_state(char *keyname, int expected_data_version) {
432 if(temp_keyname==NULL) 432 if(temp_keyname==NULL)
433 die(STATE_UNKNOWN, _("Cannot execute strdup: %s"), strerror(errno)); 433 die(STATE_UNKNOWN, _("Cannot execute strdup: %s"), strerror(errno));
434 } 434 }
435 /* Convert all non-alphanumerics to _ */ 435 /* Die if invalid characters used for keyname */
436 p = temp_keyname; 436 p = temp_keyname;
437 while(*p!='\0') { 437 while(*p!='\0') {
438 if(! isalnum(*p)) { 438 if(! (isalnum(*p) || *p == '_')) {
439 *p='_'; 439 die(STATE_UNKNOWN, _("Invalid character for keyname - only alphanumerics or '_'"));
440 } 440 }
441 p++; 441 p++;
442 } 442 }