2 patches to fix minor issues in Nagios 2.0
Ethan Galstad
nagios at nagios.org
Wed Mar 24 06:22:43 CET 2004
Thanks! Patches will be applied.
On 15 Mar 2004 at 16:31, Christopher Gurnee wrote:
>
> First issue:
> When a hostgroup is defined with no members, the last host definition
> to have a "hostgroups" attribute which references the hostgroup is not
> correctly added to the hostgroup, and causes an error. (Host
> definitions in the config files are added to hostgroups in reverse
> order.)
>
> *** ../nagios-orig/xdata/xodtemplate.c Mon Feb 16 20:59:32 2004
> --- xdata/xodtemplate.c Mon Mar 15 14:38:01 2004
> ***************
> *** 6408,6414 ****
>
> /* add this list to the hostgroup members
> directive */ if(temp_hostgroup->members==NULL)
> ! temp_hostgroup->members=strdup(temp_pt
> ! r);
> else{
> new_members=(char
> *)realloc(temp_hostgroup->members,strl
> en(temp_hostgroup->members)+strlen(tem
> p_host->host_name)+2);
> if(new_members!=NULL){
> --- 6408,6414 ----
>
> /* add this list to the hostgroup members
> directive */ if(temp_hostgroup->members==NULL)
> ! temp_hostgroup->members=strdup(temp_ho
> ! st->host_name);
> else{
> new_members=(char
> *)realloc(temp_hostgroup->members,strl
> en(temp_hostgroup->members)+strlen(tem
> p_host->host_name)+2);
> if(new_members!=NULL){
>
>
> Second issue:
> The clean_macro_chars are stripped from handlers before they are
> executed, but not from notifications as the docs suggest.
>
> *** ../nagios-orig/base/notifications.c Tue Feb 10 23:48:47 2004
> --- base/notifications.c Fri Mar 5 13:52:43 2004
> ***************
> *** 577,582 ****
> --- 577,583 ----
> char temp_buffer[MAX_INPUT_BUFFER];
> int early_timeout=FALSE;
> double exectime;
> + int
> + macro_options=STRIP_ILLEGAL_MACRO_CHARS|ESCAPE_MACRO_CHARS;
>
> #ifdef DEBUG0
> printf("notify_contact_of_service() start\n");
> ***************
> *** 599,609 ****
> command_name_ptr=strtok(command_name,"!");
>
> /* get the raw command line */
> ! get_raw_command_line(temp_commandsmember->command,raw_
> ! command,sizeof(raw_command),0);
> strip(raw_command);
>
> /* process any macros contained in the argument */ !
>
> process_macros(raw_command,processed_command,sizeof(processed_command)
> ,0);
> strip(processed_command);
>
> /* run the notification command */
> --- 600,610 ----
> command_name_ptr=strtok(command_name,"!");
>
> /* get the raw command line */
> ! get_raw_command_line(temp_commandsmember->command,raw_
> ! command,sizeof(raw_command),macro_options);
> strip(raw_command);
>
> /* process any macros contained in the argument */ !
>
> process_macros(raw_command,processed_command,sizeof(processed_command)
> ,macro_options);
> strip(processed_command);
>
> /* run the notification command */
> ***************
> *** 1250,1257 ****
> char processed_command[MAX_INPUT_BUFFER];
> int early_timeout=FALSE;
> double exectime;
>
> -
> #ifdef DEBUG0
> printf("notify_contact_of_host() start\n");
> #endif
> --- 1251,1258 ----
> char processed_command[MAX_INPUT_BUFFER];
> int early_timeout=FALSE;
> double exectime;
> + int
> + macro_options=STRIP_ILLEGAL_MACRO_CHARS|ESCAPE_MACRO_CHARS;
>
> #ifdef DEBUG0
> printf("notify_contact_of_host() start\n");
> #endif
> ***************
> *** 1273,1289 ****
> command_name_ptr=strtok(command_name,"!");
>
> /* get the raw command line */
> ! get_raw_command_line(temp_commandsmember->command,raw_
> ! command,sizeof(raw_command),0);
> strip(raw_command);
>
> /* process any macros contained in the argument */ !
>
> process_macros(raw_command,processed_command,sizeof(processed_command)
> ,0);
> strip(processed_command);
>
> /* run the notification command */
> if(strcmp(processed_command,"")){
>
> -
> #ifdef DEBUG4
> printf("\tRaw Command:
> %s\n",raw_command); printf("\tProcessed
> Command: %s\n",processed_command);
> --- 1274,1289 ----
> command_name_ptr=strtok(command_name,"!");
>
> /* get the raw command line */
> ! get_raw_command_line(temp_commandsmember->command,raw_
> ! command,sizeof(raw_command),macro_options);
> strip(raw_command);
>
> /* process any macros contained in the argument */ !
>
> process_macros(raw_command,processed_command,sizeof(processed_command)
> ,macro_options);
> strip(processed_command);
>
> /* run the notification command */
> if(strcmp(processed_command,"")){
>
> #ifdef DEBUG4
> printf("\tRaw Command:
> %s\n",raw_command); printf("\tProcessed
> Command: %s\n",processed_command);
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by: IBM Linux Tutorials
> Free Linux tutorial presented by Daniel Robbins, President and CEO of
> GenToo technologies. Learn everything from fundamentals to system
> administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
> _______________________________________________ Nagios-devel mailing
> list Nagios-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/nagios-devel
>
Ethan Galstad,
Nagios Developer
---
Email: nagios at nagios.org
Website: http://www.nagios.org
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
More information about the Developers
mailing list