diff options
-rw-r--r-- | lib/utils_base.c | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/lib/utils_base.c b/lib/utils_base.c index cfff7cb9..1234e25a 100644 --- a/lib/utils_base.c +++ b/lib/utils_base.c | |||
@@ -37,10 +37,12 @@ void np_init( char *plugin_name, int argc, char **argv ) { | |||
37 | if (this_nagios_plugin==NULL) { | 37 | if (this_nagios_plugin==NULL) { |
38 | this_nagios_plugin = malloc(sizeof(nagios_plugin)); | 38 | this_nagios_plugin = malloc(sizeof(nagios_plugin)); |
39 | if (this_nagios_plugin==NULL) { | 39 | if (this_nagios_plugin==NULL) { |
40 | die(STATE_UNKNOWN, _("Cannot allocate memory: %s\n"), | 40 | die(STATE_UNKNOWN, _("Cannot allocate memory: %s"), |
41 | strerror(errno)); | 41 | strerror(errno)); |
42 | } | 42 | } |
43 | this_nagios_plugin->plugin_name = strdup(plugin_name); | 43 | this_nagios_plugin->plugin_name = strdup(plugin_name); |
44 | if (this_nagios_plugin->plugin_name==NULL) | ||
45 | die(STATE_UNKNOWN, _("Cannot execute strdup: %s"), strerror(errno)); | ||
44 | this_nagios_plugin->argc = argc; | 46 | this_nagios_plugin->argc = argc; |
45 | this_nagios_plugin->argv = argv; | 47 | this_nagios_plugin->argv = argv; |
46 | } | 48 | } |
@@ -142,7 +144,7 @@ _set_thresholds(thresholds **my_thresholds, char *warn_string, char *critical_st | |||
142 | thresholds *temp_thresholds = NULL; | 144 | thresholds *temp_thresholds = NULL; |
143 | 145 | ||
144 | if ((temp_thresholds = malloc(sizeof(thresholds))) == NULL) | 146 | if ((temp_thresholds = malloc(sizeof(thresholds))) == NULL) |
145 | die(STATE_UNKNOWN, _("Cannot allocate memory: %s\n"), | 147 | die(STATE_UNKNOWN, _("Cannot allocate memory: %s"), |
146 | strerror(errno)); | 148 | strerror(errno)); |
147 | 149 | ||
148 | temp_thresholds->warning = NULL; | 150 | temp_thresholds->warning = NULL; |
@@ -361,6 +363,7 @@ char *_np_state_generate_key() { | |||
361 | char **argv = this_nagios_plugin->argv; | 363 | char **argv = this_nagios_plugin->argv; |
362 | unsigned char result[20]; | 364 | unsigned char result[20]; |
363 | char keyname[41]; | 365 | char keyname[41]; |
366 | char *p=NULL; | ||
364 | 367 | ||
365 | sha1_init_ctx(&ctx); | 368 | sha1_init_ctx(&ctx); |
366 | 369 | ||
@@ -375,7 +378,11 @@ char *_np_state_generate_key() { | |||
375 | } | 378 | } |
376 | keyname[40]='\0'; | 379 | keyname[40]='\0'; |
377 | 380 | ||
378 | return strdup(keyname); | 381 | p = strdup(keyname); |
382 | if(p==NULL) { | ||
383 | die(STATE_UNKNOWN, _("Cannot execute strdup: %s"), strerror(errno)); | ||
384 | } | ||
385 | return p; | ||
379 | } | 386 | } |
380 | 387 | ||
381 | void _cleanup_state_data() { | 388 | void _cleanup_state_data() { |
@@ -414,14 +421,16 @@ void np_enable_state(char *keyname, int expected_data_version) { | |||
414 | die(STATE_UNKNOWN, _("This requires np_init to be called")); | 421 | die(STATE_UNKNOWN, _("This requires np_init to be called")); |
415 | 422 | ||
416 | this_state = (state_key *) malloc(sizeof(state_key)); | 423 | this_state = (state_key *) malloc(sizeof(state_key)); |
417 | |||
418 | if(this_state==NULL) | 424 | if(this_state==NULL) |
419 | die(STATE_UNKNOWN, _("Cannot allocate memory for state key")); | 425 | die(STATE_UNKNOWN, _("Cannot allocate memory: %s"), |
426 | strerror(errno)); | ||
420 | 427 | ||
421 | if(keyname==NULL) { | 428 | if(keyname==NULL) { |
422 | temp_keyname = _np_state_generate_key(); | 429 | temp_keyname = _np_state_generate_key(); |
423 | } else { | 430 | } else { |
424 | temp_keyname = strdup(keyname); | 431 | temp_keyname = strdup(keyname); |
432 | if(temp_keyname==NULL) | ||
433 | die(STATE_UNKNOWN, _("Cannot execute strdup: %s"), strerror(errno)); | ||
425 | } | 434 | } |
426 | /* Convert all non-alphanumerics to _ */ | 435 | /* Convert all non-alphanumerics to _ */ |
427 | p = temp_keyname; | 436 | p = temp_keyname; |
@@ -465,9 +474,9 @@ state_data *np_state_read() { | |||
465 | if(statefile!=NULL) { | 474 | if(statefile!=NULL) { |
466 | 475 | ||
467 | this_state_data = (state_data *) malloc(sizeof(state_data)); | 476 | this_state_data = (state_data *) malloc(sizeof(state_data)); |
468 | |||
469 | if(this_state_data==NULL) | 477 | if(this_state_data==NULL) |
470 | die(STATE_UNKNOWN, _("Cannot allocate memory for state data")); | 478 | die(STATE_UNKNOWN, _("Cannot allocate memory: %s"), |
479 | strerror(errno)); | ||
471 | 480 | ||
472 | this_state_data->data=NULL; | 481 | this_state_data->data=NULL; |
473 | this_nagios_plugin->state->state_data = this_state_data; | 482 | this_nagios_plugin->state->state_data = this_state_data; |
@@ -500,6 +509,9 @@ int _np_state_read_file(FILE *f) { | |||
500 | 509 | ||
501 | /* Note: This introduces a limit of 1024 bytes in the string data */ | 510 | /* Note: This introduces a limit of 1024 bytes in the string data */ |
502 | line = (char *) malloc(1024); | 511 | line = (char *) malloc(1024); |
512 | if(line==NULL) | ||
513 | die(STATE_UNKNOWN, _("Cannot allocate memory: %s"), | ||
514 | strerror(errno)); | ||
503 | 515 | ||
504 | while(!failure && (fgets(line,1024,f))!=NULL){ | 516 | while(!failure && (fgets(line,1024,f))!=NULL){ |
505 | pos=strlen(line); | 517 | pos=strlen(line); |
@@ -536,6 +548,8 @@ int _np_state_read_file(FILE *f) { | |||
536 | break; | 548 | break; |
537 | case STATE_DATA_TEXT: | 549 | case STATE_DATA_TEXT: |
538 | this_nagios_plugin->state->state_data->data = strdup(line); | 550 | this_nagios_plugin->state->state_data->data = strdup(line); |
551 | if(this_nagios_plugin->state->state_data->data==NULL) | ||
552 | die(STATE_UNKNOWN, _("Cannot execute strdup: %s"), strerror(errno)); | ||
539 | expected=STATE_DATA_END; | 553 | expected=STATE_DATA_END; |
540 | status=TRUE; | 554 | status=TRUE; |
541 | break; | 555 | break; |
@@ -573,7 +587,8 @@ void np_state_write_string(time_t data_time, char *data_string) { | |||
573 | if(access(this_nagios_plugin->state->_filename,F_OK)!=0) { | 587 | if(access(this_nagios_plugin->state->_filename,F_OK)!=0) { |
574 | asprintf(&directories, "%s", this_nagios_plugin->state->_filename); | 588 | asprintf(&directories, "%s", this_nagios_plugin->state->_filename); |
575 | if(directories==NULL) | 589 | if(directories==NULL) |
576 | die(STATE_UNKNOWN, _("Cannot malloc")); | 590 | die(STATE_UNKNOWN, _("Cannot allocate memory: %s"), |
591 | strerror(errno)); | ||
577 | 592 | ||
578 | for(p=directories+1; *p; p++) { | 593 | for(p=directories+1; *p; p++) { |
579 | if(*p=='/') { | 594 | if(*p=='/') { |
@@ -591,7 +606,8 @@ void np_state_write_string(time_t data_time, char *data_string) { | |||
591 | 606 | ||
592 | asprintf(&temp_file,"%s.XXXXXX",this_nagios_plugin->state->_filename); | 607 | asprintf(&temp_file,"%s.XXXXXX",this_nagios_plugin->state->_filename); |
593 | if(temp_file==NULL) | 608 | if(temp_file==NULL) |
594 | die(STATE_UNKNOWN, _("Cannot malloc temporary state file")); | 609 | die(STATE_UNKNOWN, _("Cannot allocate memory: %s"), |
610 | strerror(errno)); | ||
595 | 611 | ||
596 | if((fd=mkstemp(temp_file))==-1) { | 612 | if((fd=mkstemp(temp_file))==-1) { |
597 | np_free(temp_file); | 613 | np_free(temp_file); |