From: Ethan G. <ega...@us...> - 2006-02-28 23:38:33
|
Update of /cvsroot/nagios/nagios/xdata In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21121/xdata Modified Files: xpddefault.c xsddefault.c Log Message: asprintf() is starting a coup... Index: xpddefault.c =================================================================== RCS file: /cvsroot/nagios/nagios/xdata/xpddefault.c,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** xpddefault.c 16 Nov 2005 08:49:35 -0000 1.21 --- xpddefault.c 28 Feb 2006 23:38:30 -0000 1.22 *************** *** 3,8 **** * XPDDEFAULT.C - Default performance data routines * ! * Copyright (c) 2000-2004 Ethan Galstad (na...@na...) ! * Last Modified: 12-05-2004 * * License: --- 3,8 ---- * XPDDEFAULT.C - Default performance data routines * ! * Copyright (c) 2000-2006 Ethan Galstad (na...@na...) ! * Last Modified: 02-28-2006 * * License: *************** *** 71,77 **** /* initializes performance data */ int xpddefault_initialize_performance_data(char *config_file){ ! char buffer[MAX_INPUT_BUFFER]; ! char temp_buffer[MAX_INPUT_BUFFER]; ! char *temp_command_name; time_t current_time; --- 71,77 ---- /* initializes performance data */ int xpddefault_initialize_performance_data(char *config_file){ ! char *buffer=NULL; ! char *temp_buffer=NULL; ! char *temp_command_name=NULL; time_t current_time; *************** *** 98,104 **** /* make sure we have some templates defined */ if(xpddefault_host_perfdata_file_template==NULL) ! xpddefault_host_perfdata_file_template=strdup(DEFAULT_HOST_PERFDATA_FILE_TEMPLATE); if(xpddefault_service_perfdata_file_template==NULL) ! xpddefault_service_perfdata_file_template=strdup(DEFAULT_SERVICE_PERFDATA_FILE_TEMPLATE); /* process special chars in templates */ --- 98,104 ---- /* make sure we have some templates defined */ if(xpddefault_host_perfdata_file_template==NULL) ! xpddefault_host_perfdata_file_template=(char *)strdup(DEFAULT_HOST_PERFDATA_FILE_TEMPLATE); if(xpddefault_service_perfdata_file_template==NULL) ! xpddefault_service_perfdata_file_template=(char *)strdup(DEFAULT_SERVICE_PERFDATA_FILE_TEMPLATE); /* process special chars in templates */ *************** *** 113,118 **** if(xpddefault_host_perfdata_command!=NULL){ ! strncpy(temp_buffer,xpddefault_host_perfdata_command,sizeof(temp_buffer)); ! temp_buffer[sizeof(temp_buffer)-1]='\x0'; /* get the command name, leave any arguments behind */ --- 113,117 ---- if(xpddefault_host_perfdata_command!=NULL){ ! temp_buffer=(char *)strdup(xpddefault_host_perfdata_command); /* get the command name, leave any arguments behind */ *************** *** 120,134 **** if(find_command(temp_command_name)==NULL){ ! snprintf(buffer,sizeof(buffer),"Warning: Host performance command '%s' was not found - host performance data will not be processed!\n",temp_command_name); ! buffer[sizeof(buffer)-1]='\x0'; write_to_logs_and_console(buffer,NSLOG_RUNTIME_WARNING,TRUE); ! free(xpddefault_host_perfdata_command); ! xpddefault_host_perfdata_command=NULL; } } if(xpddefault_service_perfdata_command!=NULL){ ! strncpy(temp_buffer,xpddefault_service_perfdata_command,sizeof(temp_buffer)); ! temp_buffer[sizeof(temp_buffer)-1]='\x0'; /* get the command name, leave any arguments behind */ --- 119,131 ---- if(find_command(temp_command_name)==NULL){ ! asprintf(&buffer,"Warning: Host performance command '%s' was not found - host performance data will not be processed!\n",temp_command_name); write_to_logs_and_console(buffer,NSLOG_RUNTIME_WARNING,TRUE); ! my_free((void **)&buffer); ! my_free((void **)&xpddefault_host_perfdata_command); } } if(xpddefault_service_perfdata_command!=NULL){ ! temp_buffer=(char *)strdup(xpddefault_service_perfdata_command); /* get the command name, leave any arguments behind */ *************** *** 136,150 **** if(find_command(temp_command_name)==NULL){ ! snprintf(buffer,sizeof(buffer),"Warning: Service performance command '%s' was not found - service performance data will not be processed!\n",temp_command_name); ! buffer[sizeof(buffer)-1]='\x0'; write_to_logs_and_console(buffer,NSLOG_RUNTIME_WARNING,TRUE); ! free(xpddefault_service_perfdata_command); ! xpddefault_service_perfdata_command=NULL; } } if(xpddefault_host_perfdata_file_processing_command!=NULL){ ! strncpy(temp_buffer,xpddefault_host_perfdata_file_processing_command,sizeof(temp_buffer)); ! temp_buffer[sizeof(temp_buffer)-1]='\x0'; /* get the command name, leave any arguments behind */ --- 133,145 ---- if(find_command(temp_command_name)==NULL){ ! asprintf(&buffer,"Warning: Service performance command '%s' was not found - service performance data will not be processed!\n",temp_command_name); write_to_logs_and_console(buffer,NSLOG_RUNTIME_WARNING,TRUE); ! my_free((void **)&buffer); ! my_free((void **)&xpddefault_service_perfdata_command); } } if(xpddefault_host_perfdata_file_processing_command!=NULL){ ! temp_buffer=(char *)strdup(xpddefault_host_perfdata_file_processing_command); /* get the command name, leave any arguments behind */ *************** *** 152,166 **** if(find_command(temp_command_name)==NULL){ ! snprintf(buffer,sizeof(buffer),"Warning: Host performance file processing command '%s' was not found - host performance data file will not be processed!\n",temp_command_name); ! buffer[sizeof(buffer)-1]='\x0'; write_to_logs_and_console(buffer,NSLOG_RUNTIME_WARNING,TRUE); ! free(xpddefault_host_perfdata_file_processing_command); ! xpddefault_host_perfdata_file_processing_command=NULL; } } if(xpddefault_service_perfdata_file_processing_command!=NULL){ ! strncpy(temp_buffer,xpddefault_service_perfdata_file_processing_command,sizeof(temp_buffer)); ! temp_buffer[sizeof(temp_buffer)-1]='\x0'; /* get the command name, leave any arguments behind */ --- 147,159 ---- if(find_command(temp_command_name)==NULL){ ! asprintf(&buffer,"Warning: Host performance file processing command '%s' was not found - host performance data file will not be processed!\n",temp_command_name); write_to_logs_and_console(buffer,NSLOG_RUNTIME_WARNING,TRUE); ! my_free((void **)&buffer); ! my_free((void **)&xpddefault_host_perfdata_file_processing_command); } } if(xpddefault_service_perfdata_file_processing_command!=NULL){ ! temp_buffer=(char *)strdup(xpddefault_service_perfdata_file_processing_command); /* get the command name, leave any arguments behind */ *************** *** 168,176 **** if(find_command(temp_command_name)==NULL){ ! snprintf(buffer,sizeof(buffer),"Warning: Service performance file processing command '%s' was not found - service performance data file will not be processed!\n",temp_command_name); ! buffer[sizeof(buffer)-1]='\x0'; write_to_logs_and_console(buffer,NSLOG_RUNTIME_WARNING,TRUE); ! free(xpddefault_service_perfdata_file_processing_command); ! xpddefault_service_perfdata_file_processing_command=NULL; } } --- 161,168 ---- if(find_command(temp_command_name)==NULL){ ! asprintf(&buffer,"Warning: Service performance file processing command '%s' was not found - service performance data file will not be processed!\n",temp_command_name); write_to_logs_and_console(buffer,NSLOG_RUNTIME_WARNING,TRUE); ! my_free((void **)&buffer); ! my_free((void **)&xpddefault_service_perfdata_file_processing_command); } } *************** *** 185,206 **** /* save the host perf data file macro */ ! if(macro_x[MACRO_HOSTPERFDATAFILE]!=NULL){ ! free(macro_x[MACRO_HOSTPERFDATAFILE]); ! macro_x[MACRO_HOSTPERFDATAFILE]=NULL; } - if(xpddefault_host_perfdata_file!=NULL) - macro_x[MACRO_HOSTPERFDATAFILE]=(char *)strdup(xpddefault_host_perfdata_file); - if(macro_x[MACRO_HOSTPERFDATAFILE]!=NULL) - strip(macro_x[MACRO_HOSTPERFDATAFILE]); /* save the service perf data file macro */ ! if(macro_x[MACRO_SERVICEPERFDATAFILE]!=NULL){ ! free(macro_x[MACRO_SERVICEPERFDATAFILE]); ! macro_x[MACRO_SERVICEPERFDATAFILE]=NULL; } ! if(xpddefault_service_perfdata_file!=NULL) ! macro_x[MACRO_SERVICEPERFDATAFILE]=(char *)strdup(xpddefault_service_perfdata_file); ! if(macro_x[MACRO_SERVICEPERFDATAFILE]!=NULL) ! strip(macro_x[MACRO_SERVICEPERFDATAFILE]); return OK; --- 177,196 ---- /* save the host perf data file macro */ ! my_free((void **)¯o_x[MACRO_HOSTPERFDATAFILE]); ! if(xpddefault_host_perfdata_file!=NULL){ ! if((macro_x[MACRO_HOSTPERFDATAFILE]=(char *)strdup(xpddefault_host_perfdata_file))) ! strip(macro_x[MACRO_HOSTPERFDATAFILE]); } /* save the service perf data file macro */ ! my_free((void **)¯o_x[MACRO_SERVICEPERFDATAFILE]); ! if(xpddefault_service_perfdata_file!=NULL){ ! if((macro_x[MACRO_SERVICEPERFDATAFILE]=(char *)strdup(xpddefault_service_perfdata_file))) ! strip(macro_x[MACRO_SERVICEPERFDATAFILE]); } ! ! /* free memory */ ! my_free((void **)&temp_buffer); ! my_free((void **)&buffer); return OK; *************** *** 211,226 **** int xpddefault_grab_config_info(char *config_file){ char *input=NULL; ! char temp_buffer[MAX_INPUT_BUFFER]; ! char variable[MAX_INPUT_BUFFER]; ! char value[MAX_INPUT_BUFFER]; ! char *temp_ptr; ! mmapfile *thefile; int error=FALSE; /* open the config file for reading */ if((thefile=mmap_fopen(config_file))==NULL){ ! snprintf(temp_buffer,sizeof(temp_buffer)-1,"Error: Could not open main config file '%s' for reading performance variables!\n",config_file); ! temp_buffer[sizeof(temp_buffer)-1]='\x0'; write_to_logs_and_console(temp_buffer,NSLOG_CONFIG_ERROR,TRUE); return ERROR; } --- 201,216 ---- int xpddefault_grab_config_info(char *config_file){ char *input=NULL; ! char *temp_buffer=NULL; ! char *variable=NULL; ! char *value=NULL; ! char *temp_ptr=NULL; ! mmapfile *thefile=NULL; int error=FALSE; /* open the config file for reading */ if((thefile=mmap_fopen(config_file))==NULL){ ! asprintf(&temp_buffer,"Error: Could not open main config file '%s' for reading performance variables!\n",config_file); write_to_logs_and_console(temp_buffer,NSLOG_CONFIG_ERROR,TRUE); + my_free((void **)&temp_buffer); return ERROR; } *************** *** 230,234 **** /* free memory */ ! free(input); /* read the next line */ --- 220,226 ---- /* free memory */ ! my_free((void **)&input); ! my_free((void **)&variable); ! my_free((void **)&value); /* read the next line */ *************** *** 252,257 **** /* else the variable is good */ ! strncpy(variable,temp_ptr,sizeof(variable)); ! variable[sizeof(variable)-1]='\x0'; /* get the value */ --- 244,252 ---- /* else the variable is good */ ! if((variable=(char *)strdup(temp_ptr))==NULL){ ! error=TRUE; ! break; ! } ! strip(variable); /* get the value */ *************** *** 265,270 **** /* else the value is good */ ! strncpy(value,temp_ptr,sizeof(value)); ! value[sizeof(value)-1]='\x0'; strip(value); --- 260,267 ---- /* else the value is good */ ! if((value=(char *)strdup(temp_ptr))==NULL){ ! error=TRUE; ! break; ! } strip(value); *************** *** 280,299 **** else if(!strcmp(variable,"host_perfdata_command")) ! xpddefault_host_perfdata_command=strdup(value); else if(!strcmp(variable,"service_perfdata_command")) ! xpddefault_service_perfdata_command=strdup(value); else if(!strcmp(variable,"host_perfdata_file_template")) ! xpddefault_host_perfdata_file_template=strdup(value); else if(!strcmp(variable,"service_perfdata_file_template")) ! xpddefault_service_perfdata_file_template=strdup(value); else if(!strcmp(variable,"host_perfdata_file")) ! xpddefault_host_perfdata_file=strdup(value); else if(!strcmp(variable,"service_perfdata_file")) ! xpddefault_service_perfdata_file=strdup(value); else if(!strcmp(variable,"host_perfdata_file_mode")){ --- 277,296 ---- else if(!strcmp(variable,"host_perfdata_command")) ! xpddefault_host_perfdata_command=(char *)strdup(value); else if(!strcmp(variable,"service_perfdata_command")) ! xpddefault_service_perfdata_command=(char *)strdup(value); else if(!strcmp(variable,"host_perfdata_file_template")) ! xpddefault_host_perfdata_file_template=(char *)strdup(value); else if(!strcmp(variable,"service_perfdata_file_template")) ! xpddefault_service_perfdata_file_template=(char *)strdup(value); else if(!strcmp(variable,"host_perfdata_file")) ! xpddefault_host_perfdata_file=(char *)strdup(value); else if(!strcmp(variable,"service_perfdata_file")) ! xpddefault_service_perfdata_file=(char *)strdup(value); else if(!strcmp(variable,"host_perfdata_file_mode")){ *************** *** 318,331 **** else if(!strcmp(variable,"host_perfdata_file_processing_command")) ! xpddefault_host_perfdata_file_processing_command=strdup(value); else if(!strcmp(variable,"service_perfdata_file_processing_command")) ! xpddefault_service_perfdata_file_processing_command=strdup(value); } /* free memory and close the file */ ! free(input); mmap_fclose(thefile); return OK; } --- 315,332 ---- else if(!strcmp(variable,"host_perfdata_file_processing_command")) ! xpddefault_host_perfdata_file_processing_command=(char *)strdup(value); else if(!strcmp(variable,"service_perfdata_file_processing_command")) ! xpddefault_service_perfdata_file_processing_command=(char *)strdup(value); } /* free memory and close the file */ ! my_free((void **)&input); mmap_fclose(thefile); + /* free memory */ + my_free((void **)&variable); + my_free((void **)&value); + return OK; } *************** *** 350,385 **** /* free memory */ ! if(xpddefault_host_perfdata_command!=NULL){ ! free(xpddefault_host_perfdata_command); ! xpddefault_host_perfdata_command=NULL; ! } ! if(xpddefault_service_perfdata_command!=NULL){ ! free(xpddefault_service_perfdata_command); ! xpddefault_service_perfdata_command=NULL; ! } ! if(xpddefault_host_perfdata_file_template!=NULL){ ! free(xpddefault_host_perfdata_file_template); ! xpddefault_host_perfdata_file_template=NULL; ! } ! if(xpddefault_service_perfdata_file_template!=NULL){ ! free(xpddefault_service_perfdata_file_template); ! xpddefault_service_perfdata_file_template=NULL; ! } ! if(xpddefault_host_perfdata_file!=NULL){ ! free(xpddefault_host_perfdata_file); ! xpddefault_host_perfdata_file=NULL; ! } ! if(xpddefault_service_perfdata_file!=NULL){ ! free(xpddefault_service_perfdata_file); ! xpddefault_service_perfdata_file=NULL; ! } ! if(xpddefault_host_perfdata_file_processing_command!=NULL){ ! free(xpddefault_host_perfdata_file_processing_command); ! xpddefault_host_perfdata_file_processing_command=NULL; ! } ! if(xpddefault_service_perfdata_file_processing_command!=NULL){ ! free(xpddefault_service_perfdata_file_processing_command); ! xpddefault_service_perfdata_file_processing_command=NULL; ! } return OK; --- 351,362 ---- /* free memory */ ! my_free((void **)&xpddefault_host_perfdata_command); ! my_free((void **)&xpddefault_service_perfdata_command); ! my_free((void **)&xpddefault_host_perfdata_file_template); ! my_free((void **)&xpddefault_service_perfdata_file_template); ! my_free((void **)&xpddefault_host_perfdata_file); ! my_free((void **)&xpddefault_service_perfdata_file); ! my_free((void **)&xpddefault_host_perfdata_file_processing_command); ! my_free((void **)&xpddefault_service_perfdata_file_processing_command); return OK; *************** *** 429,435 **** /* runs the service performance data command */ int xpddefault_run_service_performance_data_command(service *svc){ ! char raw_command_line[MAX_INPUT_BUFFER]; ! char processed_command_line[MAX_INPUT_BUFFER]; ! char temp_buffer[MAX_INPUT_BUFFER]; host *temp_host; int early_timeout=FALSE; --- 406,412 ---- /* runs the service performance data command */ int xpddefault_run_service_performance_data_command(service *svc){ ! char raw_command_line[MAX_INPUT_BUFFER]=""; ! char processed_command_line[MAX_INPUT_BUFFER]=""; ! char *temp_buffer=NULL; host *temp_host; int early_timeout=FALSE; *************** *** 471,477 **** /* check to see if the command timed out */ if(early_timeout==TRUE){ ! snprintf(temp_buffer,sizeof(temp_buffer),"Warning: Service performance data command '%s' for service '%s' on host '%s' timed out after %d seconds\n",processed_command_line,svc->description,svc->host_name,xpddefault_perfdata_timeout); ! temp_buffer[sizeof(temp_buffer)-1]='\x0'; write_to_logs_and_console(temp_buffer,NSLOG_RUNTIME_WARNING,TRUE); } --- 448,454 ---- /* check to see if the command timed out */ if(early_timeout==TRUE){ ! asprintf(&temp_buffer,"Warning: Service performance data command '%s' for service '%s' on host '%s' timed out after %d seconds\n",processed_command_line,svc->description,svc->host_name,xpddefault_perfdata_timeout); write_to_logs_and_console(temp_buffer,NSLOG_RUNTIME_WARNING,TRUE); + my_free((void **)&temp_buffer); } *************** *** 482,488 **** /* runs the host performance data command */ int xpddefault_run_host_performance_data_command(host *hst){ ! char raw_command_line[MAX_INPUT_BUFFER]; ! char processed_command_line[MAX_INPUT_BUFFER]; ! char temp_buffer[MAX_INPUT_BUFFER]; int early_timeout=FALSE; double exectime; --- 459,465 ---- /* runs the host performance data command */ int xpddefault_run_host_performance_data_command(host *hst){ ! char raw_command_line[MAX_INPUT_BUFFER]=""; ! char processed_command_line[MAX_INPUT_BUFFER]=""; ! char *temp_buffer=NULL; int early_timeout=FALSE; double exectime; *************** *** 519,525 **** /* check to see if the command timed out */ if(early_timeout==TRUE){ ! snprintf(temp_buffer,sizeof(temp_buffer),"Warning: Host performance data command '%s' for host '%s' timed out after %d seconds\n",processed_command_line,hst->name,xpddefault_perfdata_timeout); ! temp_buffer[sizeof(temp_buffer)-1]='\x0'; write_to_logs_and_console(temp_buffer,NSLOG_RUNTIME_WARNING,TRUE); } --- 496,502 ---- /* check to see if the command timed out */ if(early_timeout==TRUE){ ! asprintf(&temp_buffer,"Warning: Host performance data command '%s' for host '%s' timed out after %d seconds\n",processed_command_line,hst->name,xpddefault_perfdata_timeout); write_to_logs_and_console(temp_buffer,NSLOG_RUNTIME_WARNING,TRUE); + my_free((void **)&temp_buffer); } *************** *** 535,539 **** /* open the host performance data file for writing */ int xpddefault_open_host_perfdata_file(void){ ! char buffer[MAX_INPUT_BUFFER]; if(xpddefault_host_perfdata_file!=NULL){ --- 512,516 ---- /* open the host performance data file for writing */ int xpddefault_open_host_perfdata_file(void){ ! char *buffer=NULL; if(xpddefault_host_perfdata_file!=NULL){ *************** *** 542,548 **** if(xpddefault_host_perfdata_fp==NULL){ ! snprintf(buffer,sizeof(buffer),"Warning: File '%s' could not be opened - host performance data will not be written to file!\n",xpddefault_host_perfdata_file); ! buffer[sizeof(buffer)-1]='\x0'; write_to_logs_and_console(buffer,NSLOG_RUNTIME_WARNING,TRUE); return ERROR; } --- 519,525 ---- if(xpddefault_host_perfdata_fp==NULL){ ! asprintf(&buffer,"Warning: File '%s' could not be opened - host performance data will not be written to file!\n",xpddefault_host_perfdata_file); write_to_logs_and_console(buffer,NSLOG_RUNTIME_WARNING,TRUE); + my_free((void **)&buffer); return ERROR; } *************** *** 555,559 **** /* open the service performance data file for writing */ int xpddefault_open_service_perfdata_file(void){ ! char buffer[MAX_INPUT_BUFFER]; if(xpddefault_service_perfdata_file!=NULL){ --- 532,536 ---- /* open the service performance data file for writing */ int xpddefault_open_service_perfdata_file(void){ ! char *buffer=NULL; if(xpddefault_service_perfdata_file!=NULL){ *************** *** 562,568 **** if(xpddefault_service_perfdata_fp==NULL){ ! snprintf(buffer,sizeof(buffer),"Warning: File '%s' could not be opened - service performance data will not be written to file!\n",xpddefault_service_perfdata_file); ! buffer[sizeof(buffer)-1]='\x0'; write_to_logs_and_console(buffer,NSLOG_RUNTIME_WARNING,TRUE); return ERROR; } --- 539,545 ---- if(xpddefault_service_perfdata_fp==NULL){ ! asprintf(&buffer,"Warning: File '%s' could not be opened - service performance data will not be written to file!\n",xpddefault_service_perfdata_file); write_to_logs_and_console(buffer,NSLOG_RUNTIME_WARNING,TRUE); + my_free((void **)&buffer); return ERROR; } *************** *** 639,645 **** /* updates service performance data file */ int xpddefault_update_service_performance_data_file(service *svc){ ! char raw_output[MAX_INPUT_BUFFER]; ! char processed_output[MAX_INPUT_BUFFER]; ! host *temp_host; int result=OK; --- 616,622 ---- /* updates service performance data file */ int xpddefault_update_service_performance_data_file(service *svc){ ! char *raw_output=NULL; ! char processed_output[MAX_INPUT_BUFFER]=""; ! host *temp_host=NULL; int result=OK; *************** *** 658,663 **** /* get the raw line to write */ ! strncpy(raw_output,xpddefault_service_perfdata_file_template,sizeof(raw_output)); ! raw_output[sizeof(raw_output)-1]='\x0'; #ifdef DEBUG3 --- 635,639 ---- /* get the raw line to write */ ! raw_output=(char *)strdup(xpddefault_service_perfdata_file_template); #ifdef DEBUG3 *************** *** 677,680 **** --- 653,659 ---- fflush(xpddefault_service_perfdata_fp); + /* free memory */ + my_free((void **)&raw_output); + return result; } *************** *** 683,687 **** /* updates host performance data file */ int xpddefault_update_host_performance_data_file(host *hst){ ! char raw_output[MAX_INPUT_BUFFER]; char processed_output[MAX_INPUT_BUFFER]; int result=OK; --- 662,666 ---- /* updates host performance data file */ int xpddefault_update_host_performance_data_file(host *hst){ ! char *raw_output=NULL; char processed_output[MAX_INPUT_BUFFER]; int result=OK; *************** *** 697,702 **** /* get the raw output */ ! strncpy(raw_output,xpddefault_host_perfdata_file_template,sizeof(raw_output)); ! raw_output[sizeof(raw_output)-1]='\x0'; #ifdef DEBUG3 --- 676,680 ---- /* get the raw output */ ! raw_output=(char *)strdup(xpddefault_host_perfdata_file_template); #ifdef DEBUG3 *************** *** 716,719 **** --- 694,700 ---- fflush(xpddefault_host_perfdata_fp); + /* free memory */ + my_free((void **)&raw_output); + return result; } *************** *** 722,730 **** /* periodically process the host perf data file */ int xpddefault_process_host_perfdata_file(void){ ! char raw_command_line[MAX_INPUT_BUFFER]; ! char processed_command_line[MAX_INPUT_BUFFER]; ! char temp_buffer[MAX_INPUT_BUFFER]; int early_timeout=FALSE; ! double exectime; int result=OK; int macro_options=STRIP_ILLEGAL_MACRO_CHARS|ESCAPE_MACRO_CHARS; --- 703,711 ---- /* periodically process the host perf data file */ int xpddefault_process_host_perfdata_file(void){ ! char raw_command_line[MAX_INPUT_BUFFER]=""; ! char processed_command_line[MAX_INPUT_BUFFER]=""; ! char *temp_buffer=NULL; int early_timeout=FALSE; ! double exectime=0.0; int result=OK; int macro_options=STRIP_ILLEGAL_MACRO_CHARS|ESCAPE_MACRO_CHARS; *************** *** 763,769 **** /* check to see if the command timed out */ if(early_timeout==TRUE){ ! snprintf(temp_buffer,sizeof(temp_buffer),"Warning: Host performance data file processing command '%s' timed out after %d seconds\n",processed_command_line,xpddefault_perfdata_timeout); ! temp_buffer[sizeof(temp_buffer)-1]='\x0'; write_to_logs_and_console(temp_buffer,NSLOG_RUNTIME_WARNING,TRUE); } --- 744,750 ---- /* check to see if the command timed out */ if(early_timeout==TRUE){ ! asprintf(&temp_buffer,"Warning: Host performance data file processing command '%s' timed out after %d seconds\n",processed_command_line,xpddefault_perfdata_timeout); write_to_logs_and_console(temp_buffer,NSLOG_RUNTIME_WARNING,TRUE); + my_free((void **)&temp_buffer); } *************** *** 778,786 **** /* periodically process the service perf data file */ int xpddefault_process_service_perfdata_file(void){ ! char raw_command_line[MAX_INPUT_BUFFER]; ! char processed_command_line[MAX_INPUT_BUFFER]; ! char temp_buffer[MAX_INPUT_BUFFER]; int early_timeout=FALSE; ! double exectime; int result=OK; int macro_options=STRIP_ILLEGAL_MACRO_CHARS|ESCAPE_MACRO_CHARS; --- 759,767 ---- /* periodically process the service perf data file */ int xpddefault_process_service_perfdata_file(void){ ! char raw_command_line[MAX_INPUT_BUFFER]=""; ! char processed_command_line[MAX_INPUT_BUFFER]=""; ! char *temp_buffer=NULL; int early_timeout=FALSE; ! double exectime=0.0; int result=OK; int macro_options=STRIP_ILLEGAL_MACRO_CHARS|ESCAPE_MACRO_CHARS; *************** *** 819,825 **** /* check to see if the command timed out */ if(early_timeout==TRUE){ ! snprintf(temp_buffer,sizeof(temp_buffer),"Warning: Service performance data file processing command '%s' timed out after %d seconds\n",processed_command_line,xpddefault_perfdata_timeout); ! temp_buffer[sizeof(temp_buffer)-1]='\x0'; write_to_logs_and_console(temp_buffer,NSLOG_RUNTIME_WARNING,TRUE); } --- 800,806 ---- /* check to see if the command timed out */ if(early_timeout==TRUE){ ! asprintf(&temp_buffer,"Warning: Service performance data file processing command '%s' timed out after %d seconds\n",processed_command_line,xpddefault_perfdata_timeout); write_to_logs_and_console(temp_buffer,NSLOG_RUNTIME_WARNING,TRUE); + my_free((void **)&temp_buffer); } Index: xsddefault.c =================================================================== RCS file: /cvsroot/nagios/nagios/xdata/xsddefault.c,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** xsddefault.c 28 Feb 2006 16:06:49 -0000 1.35 --- xsddefault.c 28 Feb 2006 23:38:30 -0000 1.36 *************** *** 105,113 **** ! char xsddefault_status_log[MAX_FILENAME_LENGTH]=""; ! char xsddefault_temp_file[MAX_FILENAME_LENGTH]=""; #ifdef NSCORE ! char xsddefault_aggregate_temp_file[MAX_INPUT_BUFFER]; #endif --- 105,113 ---- ! char *xsddefault_status_log=NULL; ! char *xsddefault_temp_file=NULL; #ifdef NSCORE ! char *xsddefault_aggregate_temp_file=NULL; #endif *************** *** 132,143 **** /* initialize the location of the status log */ ! strncpy(xsddefault_status_log,DEFAULT_STATUS_FILE,sizeof(xsddefault_status_log)-1); ! strncpy(xsddefault_temp_file,DEFAULT_TEMP_FILE,sizeof(xsddefault_temp_file)-1); ! xsddefault_status_log[sizeof(xsddefault_status_log)-1]='\x0'; ! xsddefault_temp_file[sizeof(xsddefault_temp_file)-1]='\x0'; /* open the config file for reading */ ! if((thefile=mmap_fopen(config_file))==NULL) return ERROR; /* read in all lines from the main config file */ --- 132,144 ---- /* initialize the location of the status log */ ! xsddefault_status_log=(char *)strdup(DEFAULT_STATUS_FILE); ! xsddefault_temp_file=(char *)strdup(DEFAULT_TEMP_FILE); /* open the config file for reading */ ! if((thefile=mmap_fopen(config_file))==NULL){ ! free(xsddefault_status_log); ! free(xsddefault_temp_file); return ERROR; + } /* read in all lines from the main config file */ *************** *** 145,149 **** /* free memory */ ! free(input); /* read the next line */ --- 146,150 ---- /* free memory */ ! my_free((void **)&input); /* read the next line */ *************** *** 173,177 **** /* free memory */ ! free(input2); /* read the next line */ --- 174,178 ---- /* free memory */ ! my_free((void **)&input2); /* read the next line */ *************** *** 189,193 **** /* free memory and close the file */ ! free(input2); mmap_fclose(thefile2); } --- 190,194 ---- /* free memory and close the file */ ! my_free((void **)&input2); mmap_fclose(thefile2); } *************** *** 201,221 **** /* free memory and close the file */ ! free(input); mmap_fclose(thefile); /* we didn't find the status log name */ ! if(!strcmp(xsddefault_status_log,"")) return ERROR; /* we didn't find the temp file */ ! if(!strcmp(xsddefault_temp_file,"")) return ERROR; #ifdef NSCORE /* save the status file macro */ ! if(macro_x[MACRO_STATUSDATAFILE]!=NULL) ! free(macro_x[MACRO_STATUSDATAFILE]); ! macro_x[MACRO_STATUSDATAFILE]=(char *)strdup(xsddefault_status_log); ! if(macro_x[MACRO_STATUSDATAFILE]!=NULL) strip(macro_x[MACRO_STATUSDATAFILE]); #endif --- 202,220 ---- /* free memory and close the file */ ! my_free((void **)&input); mmap_fclose(thefile); /* we didn't find the status log name */ ! if(xsddefault_status_log==NULL) return ERROR; /* we didn't find the temp file */ ! if(xsddefault_temp_file==NULL) return ERROR; #ifdef NSCORE /* save the status file macro */ ! my_free((void **)¯o_x[MACRO_STATUSDATAFILE]); ! if((macro_x[MACRO_STATUSDATAFILE]=(char *)strdup(xsddefault_status_log))) strip(macro_x[MACRO_STATUSDATAFILE]); #endif *************** *** 234,239 **** if(temp_buffer==NULL) return; ! strncpy(xsddefault_status_log,temp_buffer,sizeof(xsddefault_status_log)-1); ! xsddefault_status_log[sizeof(xsddefault_status_log)-1]='\x0'; } --- 233,238 ---- if(temp_buffer==NULL) return; ! my_free((void **)&xsddefault_status_log); ! xsddefault_status_log=(char *)strdup(temp_buffer); } *************** *** 245,250 **** if(temp_buffer==NULL) return; ! strncpy(xsddefault_temp_file,temp_buffer,sizeof(xsddefault_temp_file)-1); ! xsddefault_temp_file[sizeof(xsddefault_temp_file)-1]='\x0'; } --- 244,249 ---- if(temp_buffer==NULL) return; ! my_free((void **)&xsddefault_temp_file); ! xsddefault_temp_file=(char *)strdup(temp_buffer); } *************** *** 271,275 **** /* delete the old status log (it might not exist) */ ! unlink(xsddefault_status_log); return OK; --- 270,275 ---- /* delete the old status log (it might not exist) */ ! if(xsddefault_status_log) ! unlink(xsddefault_status_log); return OK; *************** *** 281,289 **** /* delete the status log */ ! if(delete_status_data==TRUE){ if(unlink(xsddefault_status_log)) return ERROR; } return OK; } --- 281,293 ---- /* delete the status log */ ! if(delete_status_data==TRUE && xsddefault_status_log){ if(unlink(xsddefault_status_log)) return ERROR; } + /* free memory */ + my_free((void **)&xsddefault_status_log); + my_free((void **)&xsddefault_temp_file); + return OK; } *************** *** 297,301 **** int xsddefault_save_status_data(void){ customvariablesmember *temp_customvariablesmember=NULL; ! char temp_buffer[MAX_INPUT_BUFFER]=""; host *temp_host=NULL; service *temp_service=NULL; --- 301,305 ---- int xsddefault_save_status_data(void){ customvariablesmember *temp_customvariablesmember=NULL; ! char *temp_buffer=NULL; host *temp_host=NULL; service *temp_service=NULL; *************** *** 306,321 **** /* open a safe temp file for output */ ! snprintf(xsddefault_aggregate_temp_file,sizeof(xsddefault_aggregate_temp_file)-1,"%sXXXXXX",xsddefault_temp_file); ! xsddefault_aggregate_temp_file[sizeof(xsddefault_aggregate_temp_file)-1]='\x0'; if((fd=mkstemp(xsddefault_aggregate_temp_file))==-1){ /* log an error */ ! snprintf(temp_buffer,sizeof(temp_buffer),"Error: Unable to create temp file for writing status data!\n"); ! temp_buffer[sizeof(temp_buffer)-1]='\x0'; write_to_logs_and_console(temp_buffer,NSLOG_RUNTIME_ERROR,TRUE); return ERROR; } ! fp=fdopen(fd,"w"); if(fp==NULL){ --- 310,334 ---- /* open a safe temp file for output */ ! if(xsddefault_temp_file==NULL) ! return ERROR; ! asprintf(&xsddefault_aggregate_temp_file,"%sXXXXXX",xsddefault_temp_file); ! if(xsddefault_aggregate_temp_file==NULL) ! return ERROR; ! if((fd=mkstemp(xsddefault_aggregate_temp_file))==-1){ /* log an error */ ! asprintf(&temp_buffer,"Error: Unable to create temp file for writing status data!\n"); write_to_logs_and_console(temp_buffer,NSLOG_RUNTIME_ERROR,TRUE); + my_free((void **)&temp_buffer); + + /* free memory */ + my_free((void **)&xsddefault_status_log); + my_free((void **)&xsddefault_temp_file); + my_free((void **)&xsddefault_aggregate_temp_file); return ERROR; } ! fp=(FILE *)fdopen(fd,"w"); if(fp==NULL){ *************** *** 324,330 **** /* log an error */ ! snprintf(temp_buffer,sizeof(temp_buffer),"Error: Unable to open temp file '%s' for writing status data!\n",xsddefault_aggregate_temp_file); ! temp_buffer[sizeof(temp_buffer)-1]='\x0'; write_to_logs_and_console(temp_buffer,NSLOG_RUNTIME_ERROR,TRUE); return ERROR; --- 337,348 ---- /* log an error */ ! asprintf(&temp_buffer,"Error: Unable to open temp file '%s' for writing status data!\n",xsddefault_aggregate_temp_file); write_to_logs_and_console(temp_buffer,NSLOG_RUNTIME_ERROR,TRUE); + my_free((void **)&temp_buffer); + + /* free memory */ + my_free((void **)&xsddefault_status_log); + my_free((void **)&xsddefault_temp_file); + my_free((void **)&xsddefault_aggregate_temp_file); return ERROR; *************** *** 542,548 **** /* log an error */ ! snprintf(temp_buffer,sizeof(temp_buffer),"Error: Unable to update status data file '%s'!\n",xsddefault_status_log); ! temp_buffer[sizeof(temp_buffer)-1]='\x0'; write_to_logs_and_console(temp_buffer,NSLOG_RUNTIME_ERROR,TRUE); return ERROR; --- 560,566 ---- /* log an error */ ! asprintf(&temp_buffer,"Error: Unable to update status data file '%s'!\n",xsddefault_status_log); write_to_logs_and_console(temp_buffer,NSLOG_RUNTIME_ERROR,TRUE); + my_free((void **)&temp_buffer); return ERROR; *************** *** 586,590 **** /* free memory */ ! free(input); /* read the next line */ --- 604,608 ---- /* free memory */ ! my_free((void **)&input); /* read the next line */ *************** *** 715,719 **** if(temp_hoststatus!=NULL){ if(!strcmp(var,"host_name")) ! temp_hoststatus->host_name=strdup(val); else if(!strcmp(var,"has_been_checked")) temp_hoststatus->has_been_checked=(atoi(val)>0)?TRUE:FALSE; --- 733,737 ---- if(temp_hoststatus!=NULL){ if(!strcmp(var,"host_name")) ! temp_hoststatus->host_name=(char *)strdup(val); else if(!strcmp(var,"has_been_checked")) temp_hoststatus->has_been_checked=(atoi(val)>0)?TRUE:FALSE; *************** *** 731,739 **** temp_hoststatus->last_hard_state=atoi(val); else if(!strcmp(var,"plugin_output")) ! temp_hoststatus->plugin_output=strdup(val); else if(!strcmp(var,"long_plugin_output")) ! temp_hoststatus->long_plugin_output=strdup(val); else if(!strcmp(var,"performance_data")) ! temp_hoststatus->perf_data=strdup(val); else if(!strcmp(var,"current_attempt")) temp_hoststatus->current_attempt=atoi(val); --- 749,757 ---- temp_hoststatus->last_hard_state=atoi(val); else if(!strcmp(var,"plugin_output")) ! temp_hoststatus->plugin_output=(char *)strdup(val); else if(!strcmp(var,"long_plugin_output")) ! temp_hoststatus->long_plugin_output=(char *)strdup(val); else if(!strcmp(var,"performance_data")) ! temp_hoststatus->perf_data=(char *)strdup(val); else if(!strcmp(var,"current_attempt")) temp_hoststatus->current_attempt=atoi(val); *************** *** 809,815 **** if(temp_servicestatus!=NULL){ if(!strcmp(var,"host_name")) ! temp_servicestatus->host_name=strdup(val); else if(!strcmp(var,"service_description")) ! temp_servicestatus->description=strdup(val); else if(!strcmp(var,"has_been_checked")) temp_servicestatus->has_been_checked=(atoi(val)>0)?TRUE:FALSE; --- 827,833 ---- if(temp_servicestatus!=NULL){ if(!strcmp(var,"host_name")) ! temp_servicestatus->host_name=(char *)strdup(val); else if(!strcmp(var,"service_description")) ! temp_servicestatus->description=(char *)strdup(val); else if(!strcmp(var,"has_been_checked")) temp_servicestatus->has_been_checked=(atoi(val)>0)?TRUE:FALSE; *************** *** 845,853 **** temp_servicestatus->last_time_critical=strtoul(val,NULL,10); else if(!strcmp(var,"plugin_output")) ! temp_servicestatus->plugin_output=strdup(val); else if(!strcmp(var,"long_plugin_output")) ! temp_servicestatus->long_plugin_output=strdup(val); else if(!strcmp(var,"performance_data")) ! temp_servicestatus->perf_data=strdup(val); else if(!strcmp(var,"last_check")) temp_servicestatus->last_check=strtoul(val,NULL,10); --- 863,871 ---- temp_servicestatus->last_time_critical=strtoul(val,NULL,10); else if(!strcmp(var,"plugin_output")) ! temp_servicestatus->plugin_output=(char *)strdup(val); else if(!strcmp(var,"long_plugin_output")) ! temp_servicestatus->long_plugin_output=(char *)strdup(val); else if(!strcmp(var,"performance_data")) ! temp_servicestatus->perf_data=(char *)strdup(val); else if(!strcmp(var,"last_check")) temp_servicestatus->last_check=strtoul(val,NULL,10); *************** *** 913,919 **** /* free memory and close the file */ ! free(input); mmap_fclose(thefile); return OK; } --- 931,941 ---- /* free memory and close the file */ ! my_free((void **)&input); mmap_fclose(thefile); + /* free memory */ + my_free((void **)&xsddefault_status_log); + my_free((void **)&xsddefault_temp_file); + return OK; } |