From: Ethan G. <ega...@us...> - 2005-04-30 22:14:09
|
Update of /cvsroot/nagios/nagios/base In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1352/base Modified Files: utils.c Log Message: Patches and minor cleanups Index: utils.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/utils.c,v retrieving revision 1.100 retrieving revision 1.101 diff -C2 -d -r1.100 -r1.101 *** utils.c 7 Apr 2005 03:37:27 -0000 1.100 --- utils.c 30 Apr 2005 22:13:57 -0000 1.101 *************** *** 4,8 **** * * Copyright (c) 1999-2005 Ethan Galstad (na...@na...) ! * Last Modified: 04-05-2005 * * License: --- 4,8 ---- * * Copyright (c) 1999-2005 Ethan Galstad (na...@na...) ! * Last Modified: 04-30-2005 * * License: *************** *** 222,226 **** --- 222,229 ---- extern circular_buffer event_broker_buffer; + /* from GNU defines errno as a macro, since it's a per-thread variable */ + #ifndef errno extern int errno; + #endif *************** *** 2378,2385 **** /* saves the name of a macro */ ! int add_macrox_name(int index, char *name){ /* dup the macro name */ ! macro_x_names[index]=strdup(name); return OK; --- 2381,2388 ---- /* saves the name of a macro */ ! int add_macrox_name(int i, char *name){ /* dup the macro name */ ! macro_x_names[i]=strdup(name); return OK; *************** *** 3130,3134 **** char *weekdays[7]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"}; char *months[12]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"}; ! char *tzone=""; if(raw_time==NULL) --- 3133,3142 ---- char *weekdays[7]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"}; char *months[12]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"}; ! ! #ifdef HAVE_TM_ZONE ! # define tzone tm_ptr->tm_zone ! #else ! # define tzone (tm_ptr->tm_isdst)?tzname[1]:tzname[0] ! #endif if(raw_time==NULL) *************** *** 3146,3155 **** year=tm_ptr->tm_year+1900; - #ifdef HAVE_TM_ZONE - tzone=(char *)tm_ptr->tm_zone; - #else - tzone=(tm_ptr->tm_isdst)?tzname[1]:tzname[0]; - #endif - /* ctime() style date/time */ if(type==LONG_DATE_TIME) --- 3154,3157 ---- *************** *** 3182,3185 **** --- 3184,3190 ---- buffer[buffer_length-1]='\x0'; + /* don't mess up other functions that might want to call a variable 'tzone' */ + #undef tzone + return; } *************** *** 3590,3593 **** --- 3595,3602 ---- #endif + /* only drop privileges if we're running as root, so we don't interfere with being debugged while running as some random user */ + if(getuid()!=0) + return OK; + /* set effective group ID */ if(group!=NULL){ *************** *** 3702,3706 **** /* clear the message buffer */ ! bzero((void *)message,sizeof(service_message)); /* get a lock on the buffer */ --- 3711,3715 ---- /* clear the message buffer */ ! memset((void *)message,0,sizeof(service_message)); /* get a lock on the buffer */ *************** *** 4078,4085 **** return NULL; ! token_position=index(my_strtok_buffer,tokens[0]); if(token_position==NULL){ ! my_strtok_buffer=index(my_strtok_buffer,'\x0'); return sequence_head; } --- 4087,4094 ---- return NULL; ! token_position=strchr(my_strtok_buffer,tokens[0]); if(token_position==NULL){ ! my_strtok_buffer=strchr(my_strtok_buffer,'\x0'); return sequence_head; } *************** *** 4385,4389 **** /* find the end of the string (or buffer) */ for(x=temp_mmapfile->current_position;x<temp_mmapfile->file_size;x++){ ! if(*(char *)(temp_mmapfile->mmap_buf+x)=='\n'){ x++; break; --- 4394,4398 ---- /* find the end of the string (or buffer) */ for(x=temp_mmapfile->current_position;x<temp_mmapfile->file_size;x++){ ! if(*(char *)((char *)temp_mmapfile->mmap_buf+x)=='\n'){ x++; break; *************** *** 4399,4403 **** /* copy string to newly allocated memory and terminate the string */ ! memcpy(buf,(char *)(temp_mmapfile->mmap_buf+temp_mmapfile->current_position),len); buf[len]='\x0'; --- 4408,4412 ---- /* copy string to newly allocated memory and terminate the string */ ! memcpy(buf,(char *)((char *)temp_mmapfile->mmap_buf+temp_mmapfile->current_position),len); buf[len]='\x0'; *************** *** 4674,4679 **** /* loop if no data */ ! if(pollval<=0) continue; /* should we shutdown? */ --- 4683,4713 ---- /* loop if no data */ ! if(pollval==0) ! continue; ! ! /* check for errors */ ! if(pollval==-1){ ! ! switch(errno){ ! case EBADF: ! write_to_log("service_result_worker_thread(): poll(): EBADF",logging_options,NULL); ! break; ! case ENOMEM: ! write_to_log("service_result_worker_thread(): poll(): ENOMEM",logging_options,NULL); ! break; ! case EFAULT: ! write_to_log("service_result_worker_thread(): poll(): EFAULT",logging_options,NULL); ! break; ! case EINTR: ! /* this should never happen */ ! write_to_log("service_result_worker_thread(): poll(): EINTR (impossible)",logging_options,NULL); ! break; ! default: ! write_to_log("service_result_worker_thread(): poll(): Unknown errno value.",logging_options,NULL); ! break; ! } ! continue; + } /* should we shutdown? */ *************** *** 4689,4693 **** /* clear the message buffer */ ! bzero((void *)&message,sizeof(service_message)); /* initialize the number of bytes to read */ --- 4723,4727 ---- /* clear the message buffer */ ! memset((void *)&message,0,sizeof(service_message)); /* initialize the number of bytes to read */ |