[nagiosplug] Convert bad chars to underscore
Ton Voon
tonvoon at users.sourceforge.net
Mon Jun 21 16:25:31 CEST 2010
Module: nagiosplug
Branch: ton/state
Commit: 29cf8ff2fea1a8f0e1f56b9f8a07fd7ee68c1770
Author: Ton Voon <ton.voon at opsera.com>
Date: Mon Jun 21 13:31:21 2010 +0100
URL: http://nagiosplug.git.sf.net/git/gitweb.cgi?p=nagiosplug/nagiosplug;a=commit;h=29cf8ff
Convert bad chars to underscore
---
lib/tests/test_utils.c | 6 ++++++
lib/utils_base.c | 23 +++++++++++++++++++----
2 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/lib/tests/test_utils.c b/lib/tests/test_utils.c
index e90d4fb..ffab748 100644
--- a/lib/tests/test_utils.c
+++ b/lib/tests/test_utils.c
@@ -298,6 +298,12 @@ main (int argc, char **argv)
ok( !strcmp(temp_state_key->name, "Ahash"), "Got key name" );
+ np_enable_state("bad^chars$in at here", 77);
+ temp_state_key = temp_nagios_plugin->state;
+ ok( !strcmp(temp_state_key->plugin_name, "check_test"), "Got plugin name" );
+ ok( !strcmp(temp_state_key->name, "bad_chars_in_here"), "Got key name with bad chars replaced" );
+ ok( !strcmp(temp_state_key->_filename, "/usr/local/nagios/var/check_test/bad_chars_in_here"), "Got internal filename" );
+
np_enable_state("funnykeyname", 54);
temp_state_key = temp_nagios_plugin->state;
ok( !strcmp(temp_state_key->plugin_name, "check_test"), "Got plugin name" );
diff --git a/lib/utils_base.c b/lib/utils_base.c
index e6b20c8..b86ba73 100644
--- a/lib/utils_base.c
+++ b/lib/utils_base.c
@@ -47,6 +47,9 @@ void np_init( char *plugin_name ) {
void np_cleanup() {
if (this_nagios_plugin!=NULL) {
if(this_nagios_plugin->state!=NULL) {
+ np_free(this_nagios_plugin->state->state_data->data);
+ np_free(this_nagios_plugin->state->state_data);
+ np_free(this_nagios_plugin->state->name);
np_free(this_nagios_plugin->state);
}
np_free(this_nagios_plugin->plugin_name);
@@ -351,7 +354,7 @@ char *np_extract_value(const char *varlist, const char *name, char sep) {
* parse of argv, so that uniqueness in parameters are reflected there.
*/
char *_np_state_generate_key() {
- return "Ahash";
+ return strdup("Ahash");
}
void _cleanup_state_data() {
@@ -383,6 +386,8 @@ char* _np_state_calculate_location_prefix(){
void np_enable_state(char *keyname, int expected_data_version) {
state_key *this_state = NULL;
char *temp_filename = NULL;
+ char *temp_keyname = NULL;
+ char *p=NULL;
if(this_nagios_plugin==NULL)
die(STATE_UNKNOWN, _("This requires np_init to be called"));
@@ -393,15 +398,25 @@ void np_enable_state(char *keyname, int expected_data_version) {
die(STATE_UNKNOWN, _("Cannot allocate memory for state key"));
if(keyname==NULL) {
- keyname = _np_state_generate_key();
+ temp_keyname = _np_state_generate_key();
+ } else {
+ temp_keyname = strdup(keyname);
+ }
+ /* Convert all non-alphanumerics to _ */
+ p = temp_keyname;
+ while(*p!='\0') {
+ if(! isalnum(*p)) {
+ *p='_';
+ }
+ p++;
}
- this_state->name=keyname;
+ this_state->name=temp_keyname;
this_state->plugin_name=this_nagios_plugin->plugin_name;
this_state->data_version=expected_data_version;
this_state->state_data=NULL;
/* Calculate filename */
- asprintf(&temp_filename, "%s/%s/%s", _np_state_calculate_location_prefix(), this_nagios_plugin->plugin_name, keyname);
+ asprintf(&temp_filename, "%s/%s/%s", _np_state_calculate_location_prefix(), this_nagios_plugin->plugin_name, this_state->name);
this_state->_filename=temp_filename;
this_nagios_plugin->state = this_state;
More information about the Commits
mailing list