From: Ethan G. <ega...@us...> - 2004-11-30 17:16:51
|
Update of /cvsroot/nagios/nagios/base In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3572/base Modified Files: config.c events.c perfdata.c utils.c Log Message: memory leak fixes Index: events.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/events.c,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** events.c 6 Nov 2004 05:44:11 -0000 1.28 --- events.c 30 Nov 2004 17:16:22 -0000 1.29 *************** *** 4,8 **** * * Copyright (c) 1999-2004 Ethan Galstad (na...@na...) ! * Last Modified: 11-05-2004 * * License: --- 4,8 ---- * * Copyright (c) 1999-2004 Ethan Galstad (na...@na...) ! * Last Modified: 11-29-2004 * * License: *************** *** 677,681 **** event_list=&event_list_low; ! new_event=malloc(sizeof(timed_event)); if(new_event!=NULL){ new_event->event_type=event_type; --- 677,681 ---- event_list=&event_list_low; ! new_event=(timed_event *)malloc(sizeof(timed_event)); if(new_event!=NULL){ new_event->event_type=event_type; Index: utils.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/utils.c,v retrieving revision 1.84 retrieving revision 1.85 diff -C2 -d -r1.84 -r1.85 *** utils.c 6 Nov 2004 23:47:10 -0000 1.84 --- utils.c 30 Nov 2004 17:16:22 -0000 1.85 *************** *** 4,8 **** * * Copyright (c) 1999-2004 Ethan Galstad (na...@na...) ! * Last Modified: 11-06-2004 * * License: --- 4,8 ---- * * Copyright (c) 1999-2004 Ethan Galstad (na...@na...) ! * Last Modified: 11-24-2004 * * License: *************** *** 2277,2280 **** --- 2277,2292 ---- case MACRO_ADMINEMAIL: case MACRO_ADMINPAGER: + case MACRO_MAINCONFIGFILE: + case MACRO_STATUSDATAFILE: + case MACRO_COMMENTDATAFILE: + case MACRO_DOWNTIMEDATAFILE: + case MACRO_RETENTIONDATAFILE: + case MACRO_OBJECTCACHEFILE: + case MACRO_TEMPFILE: + case MACRO_LOGFILE: + case MACRO_RESOURCEFILE: + case MACRO_COMMANDFILE: + case MACRO_HOSTPERFDATAFILE: + case MACRO_SERVICEPERFDATAFILE: if(macro_x[x]!=NULL){ free(macro_x[x]); *************** *** 2517,2520 **** --- 2529,2535 ---- #endif + /* SETENV() APPEARS TO CAUSE MEMORY LEAKS! */ + return OK; + /* we won't mess with null variable names */ if(name==NULL) *************** *** 4326,4330 **** /* populate struct info for later use */ ! new_mmapfile->path=strdup(filename); new_mmapfile->fd=fd; new_mmapfile->file_size=(unsigned long)(statbuf.st_size); --- 4341,4346 ---- /* populate struct info for later use */ ! /*new_mmapfile->path=strdup(filename);*/ ! new_mmapfile->path=NULL; new_mmapfile->fd=fd; new_mmapfile->file_size=(unsigned long)(statbuf.st_size); *************** *** 4350,4353 **** --- 4366,4371 ---- /* free memory */ + if(temp_mmapfile->path!=NULL) + free(temp_mmapfile->path); free(temp_mmapfile); *************** *** 4976,4989 **** #endif ! /* free all allocated memory */ free_memory(); - /* reset global variables to default values */ - reset_variables(); - - /* clear all macros */ - clear_volatile_macros(); - clear_nonvolatile_macros(); - #ifdef DEBUG0 printf("cleanup() end\n"); --- 4994,5000 ---- #endif ! /* free all allocated memory - including macros */ free_memory(); #ifdef DEBUG0 printf("cleanup() end\n"); *************** *** 5079,5088 **** } ! for(x=0;x<MAX_COMMAND_ARGUMENTS;x++) ! macro_argv[x]=NULL; - for(x=0;x<MAX_USER_MACROS;x++) - macro_user[x]=NULL; - free_macrox_names(); --- 5090,5115 ---- } ! /* free memory associated with macros */ ! for(x=0;x<MAX_COMMAND_ARGUMENTS;x++){ ! if(macro_argv[x]!=NULL){ ! free(macro_argv[x]); ! macro_argv[x]=NULL; ! } ! } ! ! for(x=0;x<MAX_USER_MACROS;x++){ ! if(macro_user[x]!=NULL){ ! free(macro_user[x]); ! macro_user[x]=NULL; ! } ! } ! ! for(x=0;x<MACRO_X_COUNT;x++){ ! if(macro_x[x]!=NULL){ ! free(macro_x[x]); ! macro_x[x]=NULL; ! } ! } free_macrox_names(); Index: perfdata.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/perfdata.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** perfdata.c 15 Aug 2003 01:34:09 -0000 1.4 --- perfdata.c 30 Nov 2004 17:16:22 -0000 1.5 *************** *** 3,8 **** * PERFDATA.C - Performance data routines for Nagios * ! * Copyright (c) 2000-2001 Ethan Galstad (na...@na...) ! * Last Modified: 08-14-2001 * * License: --- 3,8 ---- * PERFDATA.C - Performance data routines for Nagios * ! * Copyright (c) 2000-2004 Ethan Galstad (na...@na...) ! * Last Modified: 11-29-2004 * * License: *************** *** 38,44 **** #include "../xdata/xpddefault.h" #endif - #ifdef USE_XPDFILE - #include "../xdata/xpdfile.h" - #endif --- 38,41 ---- *************** *** 58,65 **** #endif - #ifdef USE_XPDFILE - xpdfile_initialize_performance_data(config_file); - #endif - return OK; } --- 55,58 ---- *************** *** 74,81 **** #endif - #ifdef USE_XPDFILE - xpdfile_cleanup_performance_data(config_file); - #endif - return OK; } --- 67,70 ---- *************** *** 103,109 **** xpddefault_update_service_performance_data(svc); #endif - #ifdef USE_XPDFILE - xpdfile_update_service_performance_data(svc); - #endif return OK; --- 92,95 ---- *************** *** 127,133 **** xpddefault_update_host_performance_data(hst); #endif - #ifdef USE_XPDFILE - xpdfile_update_host_performance_data(hst); - #endif return OK; --- 113,116 ---- Index: config.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/config.c,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** config.c 2 Nov 2004 01:08:47 -0000 1.50 --- config.c 30 Nov 2004 17:16:22 -0000 1.51 *************** *** 4,8 **** * * Copyright (c) 1999-2004 Ethan Galstad (na...@na...) ! * Last Modified: 11-01-2004 * * License: --- 4,8 ---- * * Copyright (c) 1999-2004 Ethan Galstad (na...@na...) ! * Last Modified: 11-30-2004 * * License: *************** *** 901,904 **** --- 901,906 ---- } + if(log_archive_path!=NULL) + free(log_archive_path); log_archive_path=(char *)strdup(value); strip(log_archive_path); *************** *** 1567,1571 **** if(macro_user[user_index]!=NULL) free(macro_user[user_index]); ! macro_user[user_index]=(char *)malloc(strlen(value)+1); if(macro_user[user_index]!=NULL){ strcpy(macro_user[user_index],value); --- 1569,1573 ---- if(macro_user[user_index]!=NULL) free(macro_user[user_index]); ! macro_user[user_index]=strdup(value); if(macro_user[user_index]!=NULL){ strcpy(macro_user[user_index],value); *************** *** 1604,1631 **** /* do a pre-flight check to make sure object relationships make sense */ int pre_flight_check(void){ ! contact *temp_contact; ! commandsmember *temp_commandsmember; ! contactgroup *temp_contactgroup; ! contactgroupmember *temp_contactgroupmember; ! contactgroupsmember *temp_contactgroupsmember; ! host *temp_host; ! host *temp_host2; ! hostsmember *temp_hostsmember; ! hostgroup *temp_hostgroup; ! hostgroupmember *temp_hostgroupmember; ! servicegroup *temp_servicegroup; ! servicegroupmember *temp_servicegroupmember; ! service *temp_service; ! service *temp_service2; ! command *temp_command; ! timeperiod *temp_timeperiod; ! serviceescalation *temp_se; ! hostescalation *temp_he; ! servicedependency *temp_sd; ! servicedependency *temp_sd2; ! hostdependency *temp_hd; ! hostdependency *temp_hd2; ! hostextinfo *temp_hostextinfo; ! serviceextinfo *temp_serviceextinfo; char temp_buffer[MAX_INPUT_BUFFER]; char *temp_command_name=""; --- 1606,1633 ---- /* do a pre-flight check to make sure object relationships make sense */ int pre_flight_check(void){ ! contact *temp_contact=NULL; ! commandsmember *temp_commandsmember=NULL; ! contactgroup *temp_contactgroup=NULL; ! contactgroupmember *temp_contactgroupmember=NULL; ! contactgroupsmember *temp_contactgroupsmember=NULL; ! host *temp_host=NULL; ! host *temp_host2=NULL; ! hostsmember *temp_hostsmember=NULL; ! hostgroup *temp_hostgroup=NULL; ! hostgroupmember *temp_hostgroupmember=NULL; ! servicegroup *temp_servicegroup=NULL; ! servicegroupmember *temp_servicegroupmember=NULL; ! service *temp_service=NULL; ! service *temp_service2=NULL; ! command *temp_command=NULL; ! timeperiod *temp_timeperiod=NULL; ! serviceescalation *temp_se=NULL; ! hostescalation *temp_he=NULL; ! servicedependency *temp_sd=NULL; ! servicedependency *temp_sd2=NULL; ! hostdependency *temp_hd=NULL; ! hostdependency *temp_hd2=NULL; ! hostextinfo *temp_hostextinfo=NULL; ! serviceextinfo *temp_serviceextinfo=NULL; char temp_buffer[MAX_INPUT_BUFFER]; char *temp_command_name=""; |