Changes of Revision 43
[-] | Changed | icinga.changes |
1
2 ------------------------------------------------------------------- 3 +Sat Feb 15 17:51:47 UTC 2014 - cs@linux-administrator.com 4 + 5 +- update to release 1.8.6 6 + 7 +------------------------------------------------------------------- 8 Mon Jan 14 19:14:30 UTC 2013 - cs@linux-administrator.com 9 10 - update to release 1.8.4 11 |
||
[-] | Changed | icinga.spec ^ |
11 1
2 #!BuildIgnore: post-build-checks 3 %define name icinga 4 -%define version 1.8.4 5 -%define pkgversion 1.8.4 6 +%define version 1.8.6 7 +%define pkgversion 1.8.6 8 %define release 1 9 %define nsusr icinga 10 %define nsgrp icinga 11 |
||
[+] | Changed | icinga-1.8.6.tar.bz2/Changelog ^ |
@@ -11,6 +11,37 @@ * for configuration file changes, check the following for added/removed config options - core, classic ui: sample-config/updates/ - idoutils: module/idoutils/config/updates +* package locations may differ! + +1.8.6 - 11/02/2014 + +FIXES +* core: fix host state translation for passive host check results #5575 - MF + +* classic ui: aggressively check for possible buffer overflows in cmd.cgi (thx GitHub) #5434 - MF + + +1.8.5 - 13/12/2013 + +FIXES +* core: fix keep_unknown_macros still exposes wrong warnings to logs #3725 - MF +* core: fix checkresult reaper cleanup fails due to relative file path #3937 - MaF + +* classic ui: fixed JSON output is insufficiently escaped #3541 - RB +* classic ui: fixed segfault when reading malformed log entries #3528 - RB +* classic ui: fixed Command expansion problem with percentage signs #3929 - RB +* classic ui: fix possible buffer overflows #5250 - RB +* classic ui: fix Off-by-one memory access in process_cgivars() #5251 - RB + +* idoutils: idomod leaks memory on core reload #3749 - GB +* idoutils: add workaround fix for num_rows_affected broken in libdbi/mariadb, returned ids are 0 #3728 - MF +* idoutils: fix segfaults on reload with multiple neb modules of the same binary #4033 - MF + +* icinga.spec: add idoutils as transitional package (thx Stefan Marx, Michael Grüner) #3640 - MF +* icinga.spec: fix double %{logdir}/gui/ definitions in icinga and icinga-gui (thx René Koch) #3802 - MF + +* install: fix ido2db initscript uses same chkconfig line as icinga (Dirk Götz) #3490 - MF + 1.8.4 - 13/01/2013 @@ -24,6 +55,7 @@ * idoutils: unlink leftover socket on startup, if using unix sockets - MF * idoutils: fix long output data causes wrong data in database #2342 - MF + 1.8.3 - 12/12/2012 FIXES | ||
[+] | Changed | icinga-1.8.6.tar.bz2/INSTALLING ^ |
@@ -26,7 +26,7 @@ https://wiki.icinga.org If you happen to have questions on the install, you can get onto the -various community channels: https://www.icinga.org/support/ +various community support channels: https://www.icinga.org/support/ Good luck! :-) | ||
[+] | Changed | icinga-1.8.6.tar.bz2/Makefile.in ^ |
@@ -78,7 +78,7 @@ ############################### # Global ############################### -ICINGA_VERSION=1.8.4 +ICINGA_VERSION=1.8.6 CP=@CP@ @@ -181,7 +181,7 @@ @echo " - Read the HTML documentation in html/docs/" @echo "" @echo "before you post a question to one of the mailing lists at" - @echo "http://www.icinga.org/community/ or at Icinga Portal:" + @echo "http://www.icinga.org/support/ or at Icinga Portal:" @echo "http://www.icinga-portal.org" @echo "" @echo "Also make sure to include pertinent information that could" @@ -194,7 +194,7 @@ @echo "" @echo "For more information on obtaining support for Icinga, visit:" @echo "" - @echo " http://www.icinga.org/community/" + @echo " http://www.icinga.org/support/" @echo "" @echo "*************************************************************" @echo "" | ||
[+] | Changed | icinga-1.8.6.tar.bz2/README.RHEL ^ |
@@ -60,7 +60,7 @@ 5. Optional: install additional Icinga guis like Icinga Web or Icinga Reporting as well as addons such as PNP4Nagios, Check_MK or NagVis. For a suggested list please - either consult the docs or the wiki, or ask community members at icinga-portal.org + either consult the docs or the wiki, or ask community members at monitoring-portal.org Troubleshooting | ||
[+] | Changed | icinga-1.8.6.tar.bz2/README.RHEL.idoutils ^ |
@@ -145,10 +145,15 @@ Remember - the upgrade steps need to be applied incremential, version by version. -e.g. +Make sure to stop ido2db before applying the db upgrade! + +# service ido2db stop + # cd /usr/share/doc/icinga-idoutils/db/mysql/upgrade/ -# mysql -u root -p icinga < mysql-upgrade-1.7.0.sql +# mysql -u root -p icinga < mysql-upgrade-1.9.0.sql +# service ido2db start +# service icinga restart =========== = Advanced | ||
[+] | Changed | icinga-1.8.6.tar.bz2/TESTING ^ |
@@ -64,7 +64,7 @@ $ git format-patch -1 Attach the gotten patch to the new issue you may create at dev.icinga.org in the appropriate section. -Or via mail onto our mailinglists - http://www.icinga.org/community/ +Or via mail onto our mailinglists - http://www.icinga.org/support/ Thanks :) | ||
[+] | Changed | icinga-1.8.6.tar.bz2/base/checks.c ^ |
@@ -3617,21 +3617,17 @@ } /* translate return code to basic UP/DOWN state - the DOWN/UNREACHABLE state determination is made later */ - /* NOTE: only do this for active checks - passive check results already have the final state */ - if (queued_check_result->check_type == HOST_CHECK_ACTIVE) { - - /* if we're not doing aggressive host checking, let WARNING states indicate the host is up (fake the result to be STATE_OK) */ - if (use_aggressive_host_checking == FALSE && result == STATE_WARNING) - result = STATE_OK; - - /* OK states means the host is UP */ - if (result == STATE_OK) - result = HOST_UP; - - /* any problem state indicates the host is not UP */ - else - result = HOST_DOWN; - } + /* if we're not doing aggressive host checking, let WARNING states indicate the host is up (fake the result to be STATE_OK) */ + if (use_aggressive_host_checking == FALSE && result == STATE_WARNING) + result = STATE_OK; + + /* OK states means the host is UP */ + if (result == STATE_OK) + result = HOST_UP; + + /* any problem state indicates the host is not UP */ + else + result = HOST_DOWN; /******************* PROCESS THE CHECK RESULTS ******************/ | ||
[+] | Changed | icinga-1.8.6.tar.bz2/base/icinga.c ^ |
@@ -678,7 +678,11 @@ nagios_pid = (int)getpid(); /* read in the configuration files (main and resource config files) */ - result = read_main_config_file(config_file); + if (read_main_config_file(config_file) == ERROR) { + logit(NSLOG_PROCESS_INFO | NSLOG_RUNTIME_ERROR | NSLOG_CONFIG_ERROR, TRUE, "Failed to read main config file. Aborting."); + cleanup(); + exit(EXIT_FAILURE); + } /* we need to read the modules in the first place as object configuration before neb modules are initialized/loaded */ result = read_object_config_data(config_file, READ_MODULES, FALSE, FALSE); | ||
[+] | Changed | icinga-1.8.6.tar.bz2/base/nebmods.c ^ |
@@ -126,14 +126,13 @@ nebmodule *next_module = NULL; int x = OK; - for (temp_module = neb_module_list; temp_module;) { + for (temp_module = neb_module_list; temp_module; temp_module = next_module) { next_module = temp_module->next; my_free(temp_module->filename); my_free(temp_module->args); for (x = 0; x < NEBMODULE_MODINFO_NUMITEMS; x++) my_free(temp_module->info[x]); my_free(temp_module); - temp_module = next_module; } neb_module_list = NULL; | ||
[+] | Changed | icinga-1.8.6.tar.bz2/base/utils.c ^ |
@@ -2772,7 +2772,7 @@ * otherwise we will leave old files there */ if (stat_buf.st_mtime + max_check_result_file_age < time(NULL)) { - delete_check_result_file(dirfile->d_name); + delete_check_result_file(file); continue; } | ||
[+] | Changed | icinga-1.8.6.tar.bz2/cgi/avail.c ^ |
@@ -1110,10 +1110,8 @@ for (x = 0; variables[x] != NULL; x++) { /* do some basic length checking on the variable identifier to prevent buffer overflows */ - if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) { - x++; + if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) continue; - } /* we found the hostgroup argument */ else if (!strcmp(variables[x], "hostgroup")) { | ||
[+] | Changed | icinga-1.8.6.tar.bz2/cgi/cgiutils.c ^ |
@@ -1981,15 +1981,21 @@ break; } - /* get url options but filter out "limit" and "status" */ + /* get url options but filter out "ts_end", "ts_start" and "start" */ if (getenv("QUERY_STRING") != NULL && strcmp(getenv("QUERY_STRING"), "")) { if(strlen(getenv("QUERY_STRING")) > MAX_INPUT_BUFFER) { - printf("display_nav_table(): Could not allocate memory for stripped_query_string\n"); - exit(1); + write_to_cgi_log("display_nav_table(): Query string exceeds max length. Returning without displaying nav table.\n"); + return; } strcpy(stripped_query_string, getenv("QUERY_STRING")); strip_html_brackets(stripped_query_string); + /* check if concatenated strings exceed MAX_INPUT_BUFFER */ + if (strlen(url) + strlen(stripped_query_string) + 1 > MAX_INPUT_BUFFER) { + write_to_cgi_log("display_nav_table(): Full query string exceeds max length. Returning without displaying nav table.\n"); + return; + } + for (temp_buffer = my_strtok(stripped_query_string, "&"); temp_buffer != NULL; temp_buffer = my_strtok(NULL, "&")) { if (strncmp(temp_buffer, "ts_start=", 9) != 0 && strncmp(temp_buffer, "ts_end=", 6) != 0 && strncmp(temp_buffer, "start=", 6) != 0) { if (strstr(url, "?")) @@ -2563,17 +2569,24 @@ /* just do stuff if some options are requested */ if (getenv("QUERY_STRING") != NULL && strcmp(getenv("QUERY_STRING"), "")) { if(strlen(getenv("QUERY_STRING")) > MAX_INPUT_BUFFER) { - printf("print_export_link(): Could not allocate memory for stripped_query_string\n"); - exit(1); + write_to_cgi_log("print_export_link(): Query string exceeds max length. Returning without displaying export link.\n"); + return; } strcpy(stripped_query_string, getenv("QUERY_STRING")); strip_html_brackets(stripped_query_string); + + /* check if concatenated strings exceed MAX_INPUT_BUFFER */ + if (strlen(link) + strlen(stripped_query_string) + 2 > MAX_INPUT_BUFFER) { + write_to_cgi_log("print_export_link(): Full query string exceeds max length. Returning without displaying export link.\n"); + return; + } + strcat(link, "?"); strcat(link, stripped_query_string); } /* add string to url */ - if (add_to_url != NULL && (strlen(add_to_url) != 0)) { + if (add_to_url != NULL && strlen(add_to_url) != 0 && strlen(link) + strlen(stripped_query_string) + strlen(add_to_url) + 2 <= MAX_INPUT_BUFFER) { if (strlen(stripped_query_string) != 0) strcat(link, "&"); else @@ -3059,16 +3072,20 @@ for (i = 0, j = 0; i < len; i++) { - /* escape quotes */ - if ((char)input[i] == (char)'"') { + /* escape quotes and backslashes */ + if ((char)input[i] == (char)'"' || (char)input[i] == (char)'\\') { encoded_string[j++] = '\\'; encoded_string[j++] = input[i]; - /* escape newlines */ + /* escape newlines */ } else if ((char)input[i] == (char)'\n') { encoded_string[j++] = '\\'; encoded_string[j++] = 'n'; + /* ignore control caracters */ + } else if (input[i] < 32 || input[i] == 127) { + continue; + } else encoded_string[j++] = input[i]; } @@ -3382,12 +3399,18 @@ /* get url options but filter out "limit" and "status" */ if (getenv("QUERY_STRING") != NULL && strcmp(getenv("QUERY_STRING"), "")) { if(strlen(getenv("QUERY_STRING")) > MAX_INPUT_BUFFER) { - printf("page_num_selector(): Could not allocate memory for stripped_query_string\n"); - exit(1); + write_to_cgi_log("page_num_selector(): Query string exceeds max length. Returning without displaying num selector.\n"); + return; } strcpy(stripped_query_string, getenv("QUERY_STRING")); strip_html_brackets(stripped_query_string); + /* check if concatenated strings exceed MAX_INPUT_BUFFER */ + if (strlen(link) + strlen(stripped_query_string) + 1 > MAX_INPUT_BUFFER) { + write_to_cgi_log("page_num_selector(): Full query string exceeds max length. Returning without displaying num selector.\n"); + return; + } + for (temp_buffer = my_strtok(stripped_query_string, "&"); temp_buffer != NULL; temp_buffer = my_strtok(NULL, "&")) { if (strncmp(temp_buffer, "limit=", 6) != 0 && strncmp(temp_buffer, "start=", 6) != 0) { if (strstr(link, "?")) @@ -3499,12 +3522,18 @@ /* get url options but filter out "limit" and "status" */ if (getenv("QUERY_STRING") != NULL && strcmp(getenv("QUERY_STRING"), "")) { if(strlen(getenv("QUERY_STRING")) > MAX_INPUT_BUFFER) { - printf("display_nav_table(): Could not allocate memory for stripped_query_string\n"); - exit(1); + write_to_cgi_log("page_limit_selector(): Query string exceeds max length. Returning without displaying page limit selector.\n"); + return; } strcpy(stripped_query_string, getenv("QUERY_STRING")); strip_html_brackets(stripped_query_string); + /* check if concatenated strings exceed MAX_INPUT_BUFFER */ + if (strlen(link) + strlen(stripped_query_string) + 1 > MAX_INPUT_BUFFER) { + write_to_cgi_log("page_limit_selector(): Full query string exceeds max length. Returning without displaying page limit selector.\n"); + return; + } + for (temp_buffer = my_strtok(stripped_query_string, "&"); temp_buffer != NULL; temp_buffer = my_strtok(NULL, "&")) { if (strncmp(temp_buffer, "limit=", 6) != 0 && strncmp(temp_buffer, "start=", 6) != 0) { if (strstr(link, "?")) | ||
[+] | Changed | icinga-1.8.6.tar.bz2/cgi/cmd.c ^ |
@@ -415,10 +415,8 @@ for (x = 0; variables[x] != NULL; x++) { /* do some basic length checking on the variable identifier to prevent buffer overflows */ - if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) { - x++; + if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) continue; - } /* we found the command type */ else if (!strcmp(variables[x], "cmd_typ")) { @@ -2638,14 +2636,14 @@ len = snprintf(cmd, sizeof(cmd) - 1, "[%lu] %s;", time(NULL), command); - if (len < 0) + if (len < 0 || len >= sizeof(cmd)) return ERROR; if (fmt) { va_start(ap, fmt); len2 = vsnprintf(&cmd[len], sizeof(cmd) - len - 1, fmt, ap); va_end(ap); - if (len2 < 0) + if (len2 < 0 || len2 >= sizeof(cmd) - len) return ERROR; } | ||
[+] | Changed | icinga-1.8.6.tar.bz2/cgi/config.c ^ |
@@ -578,10 +578,8 @@ for (x = 0; variables[x] != NULL; x++) { /* do some basic length checking on the variable identifier to prevent buffer overflows */ - if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) { - x++; + if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) continue; - } /* we found the search_string argument */ else if (!strcmp(variables[x], "search_string")) { @@ -4258,6 +4256,7 @@ for (c = commandline; c && (cc = strstr(c, "$"));) { (*(cc++)) = '\0'; printf("%s", html_encode(c, FALSE)); + if (strlen(commandline_pre_processed) + strlen(c) + 1 > MAX_COMMAND_BUFFER) return; strcat(commandline_pre_processed, c); if ((*cc) == '$') { /* Escaped '$' */ @@ -4268,6 +4267,7 @@ c = strstr(cc, "$"); if (c)(*(c++)) = '\0'; printf("<FONT COLOR='#777777'>$%s%s</FONT>", html_encode(cc, FALSE), (c ? "$" : "")); + if (strlen(commandline_pre_processed) + strlen(cc) + 3 > MAX_COMMAND_BUFFER) return; strcat(commandline_pre_processed, "$"); strcat(commandline_pre_processed, cc); if (c) strcat(commandline_pre_processed, "$"); @@ -4283,8 +4283,9 @@ if (command_args[i]) { if (*(command_args[i]) != '\0') { printf("<FONT COLOR='%s'><B>%s%s%s</B></FONT>", - hash_color(i), ((lead_space[i] > 0) || (trail_space[i] > 0) ? "<U>‍" : ""), - escape_string(command_args[i]), ((lead_space[i] > 0) || (trail_space[i] > 0) ? "‍</U>" : "")); + hash_color(i), ((lead_space[i] > 0) || (trail_space[i] > 0) ? "<u>‍" : ""), + escape_string(command_args[i]), ((lead_space[i] > 0) || (trail_space[i] > 0) ? "‍</u>" : "")); + if (strlen(commandline_pre_processed) + strlen(command_args[i]) + 1 > MAX_COMMAND_BUFFER) return; strcat(commandline_pre_processed, command_args[i]); } else printf("<FONT COLOR='#0000FF'>(empty)</FONT>"); } else printf("<FONT COLOR='#0000FF'>(undefined)</FONT>"); @@ -4301,6 +4302,7 @@ } if (c) { printf("%s", html_encode(c, FALSE)); + if (strlen(commandline_pre_processed) + strlen(c) + 1 > MAX_COMMAND_BUFFER) return; strcat(commandline_pre_processed, c); } commandline_pre_processed[MAX_COMMAND_BUFFER - 1] = '\0'; | ||
[+] | Changed | icinga-1.8.6.tar.bz2/cgi/extinfo.c ^ |
@@ -825,10 +825,8 @@ for (x = 0; variables[x] != NULL; x++) { /* do some basic length checking on the variable identifier to prevent buffer overflows */ - if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) { - x++; + if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) continue; - } /* we found the display type */ else if (!strcmp(variables[x], "type")) { | ||
[+] | Changed | icinga-1.8.6.tar.bz2/cgi/getcgi.c ^ |
@@ -109,15 +109,27 @@ len = strlen(input); for (x = 0, y = 0; x < len; x++, y++) { - if (input[x] == '\x0') + if (input[x] == '\x0') { break; - else if (input[x] == '%') { + + // RB 2013-04-07 + // only allow hex conversion if '%' is follow by a valid character + } else if (input[x] == '%' && ( + // 0 - 9 + (input[x+1] >= 48 && input[x+1] <= 57) || + // A - F + (input[x+1] >= 65 && input[x+1] <= 70) || + // a - f + (input[x+1] >= 97 && input[x+1] <= 102)) + ) { + input[y] = hex_to_char(&input[x+1]); x += 2; + // RB 2011-09-08 // convert plus as well that it can bu used in service and host names } else if (input[x] == '+') { - input[y] = ' '; + input[y] = ' '; } else input[y] = input[x]; } | ||
[+] | Changed | icinga-1.8.6.tar.bz2/cgi/histogram.c ^ |
@@ -901,10 +901,8 @@ for (x = 0; variables[x] != NULL; x++) { /* do some basic length checking on the variable identifier to prevent buffer overflows */ - if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) { - x++; + if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) continue; - } /* we found the host argument */ else if (!strcmp(variables[x], "host")) { | ||
[+] | Changed | icinga-1.8.6.tar.bz2/cgi/notifications.c ^ |
@@ -362,10 +362,8 @@ for (x = 0; variables[x] != NULL; x++) { /* do some basic length checking on the variable identifier to prevent buffer overflows */ - if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) { - x++; + if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) continue; - } /* we found the host argument */ else if (!strcmp(variables[x], "host")) { | ||
[+] | Changed | icinga-1.8.6.tar.bz2/cgi/outages.c ^ |
@@ -206,10 +206,8 @@ for (x = 0; variables[x] != NULL; x++) { /* do some basic length checking on the variable identifier to prevent buffer overflows */ - if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) { - x++; + if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) continue; - } /* we found the service severity divisor option */ if (!strcmp(variables[x], "service_divisor")) { | ||
[+] | Changed | icinga-1.8.6.tar.bz2/cgi/readlogs.c ^ |
@@ -382,7 +382,11 @@ /* get timestamp */ temp_buffer = strtok(input, "]"); - timestamp = (temp_buffer == NULL) ? 0L : strtoul(temp_buffer + 1, NULL, 10); + + if (temp_buffer == NULL) + continue; + + timestamp = strtoul(temp_buffer + 1, NULL, 10); /* skip line if out of range */ if ((ts_end >= 0 && timestamp > ts_end) || (ts_start >= 0 && timestamp < ts_start)) @@ -391,6 +395,9 @@ /* get log entry text */ temp_buffer = strtok(NULL, "\n"); + if (temp_buffer == NULL) + continue; + /* if we search for something, check if it entry matches search_string */ if (search_string != NULL) { if (regexec(&preg, temp_buffer, 0, NULL, 0) == REG_NOMATCH) | ||
[+] | Changed | icinga-1.8.6.tar.bz2/cgi/status.c ^ |
@@ -1547,10 +1547,8 @@ for (x = 0; variables[x] != NULL; x++) { /* do some basic length checking on the variable identifier to prevent buffer overflows */ - if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) { - x++; + if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) continue; - } /* we found the search_string argument */ else if (!strcmp(variables[x], "search_string")) { @@ -6939,12 +6937,18 @@ /* get url options but filter out "limit" and "status" */ if (getenv("QUERY_STRING") != NULL && strcmp(getenv("QUERY_STRING"), "")) { if(strlen(getenv("QUERY_STRING")) > MAX_INPUT_BUFFER) { - printf("status_page_num_selector(): Could not allocate memory for stripped_query_string\n"); - exit(1); + write_to_cgi_log("status_page_num_selector(): Query string exceeds max length. Returning without displaying page num selector.\n"); + return; } strcpy(stripped_query_string, getenv("QUERY_STRING")); strip_html_brackets(stripped_query_string); + /* check if concatenated strings exceed MAX_INPUT_BUFFER */ + if (strlen(link) + strlen(stripped_query_string) + 1 > MAX_INPUT_BUFFER) { + write_to_cgi_log("status_page_num_selector(): Full query string exceeds max length. Returning without displaying page num selector.\n"); + return; + } + for (temp_buffer = my_strtok(stripped_query_string, "&"); temp_buffer != NULL; temp_buffer = my_strtok(NULL, "&")) { if (strncmp(temp_buffer, "limit=", 6) != 0 && strncmp(temp_buffer, "start=", 6) != 0) { if (strstr(link, "?")) | ||
[+] | Changed | icinga-1.8.6.tar.bz2/cgi/statusmap.c ^ |
@@ -313,10 +313,8 @@ for (x = 0; variables[x] != NULL; x++) { /* do some basic length checking on the variable identifier to prevent buffer overflows */ - if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) { - x++; + if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) continue; - } /* we found the host argument */ else if (!strcmp(variables[x], "host")) { | ||
[+] | Changed | icinga-1.8.6.tar.bz2/cgi/summary.c ^ |
@@ -626,10 +626,8 @@ for (x = 0; variables[x] != NULL; x++) { /* do some basic length checking on the variable identifier to prevent buffer overflows */ - if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) { - x++; + if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) continue; - } /* we found first time argument */ else if (!strcmp(variables[x], "t1")) { | ||
[+] | Changed | icinga-1.8.6.tar.bz2/cgi/trends.c ^ |
@@ -1117,10 +1117,8 @@ for (x = 0; variables[x] != NULL; x++) { /* do some basic length checking on the variable identifier to prevent buffer overflows */ - if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) { - x++; + if (strlen(variables[x]) >= MAX_INPUT_BUFFER - 1) continue; - } /* we found the host argument */ else if (!strcmp(variables[x], "host")) { | ||
[+] | Changed | icinga-1.8.6.tar.bz2/common/macros.c ^ |
@@ -200,13 +200,20 @@ /* grab the macro value */ result = grab_macro_value_r(mac, temp_buffer, &selected_macro, &clean_options, &free_macro); - log_debug_info(DEBUGL_MACROS, 2, " Processed '%s', Clean Options: %d, Free: %d\n", temp_buffer, clean_options, free_macro); + log_debug_info(DEBUGL_MACROS, 2, " Processed '%s', Clean Options: %d, Free: %d\n, Value: '%s'", temp_buffer, clean_options, free_macro, selected_macro ? selected_macro : ""); /* an error occurred - we couldn't parse the macro, so continue on */ if (result == ERROR) { /* empty string still could mean that we hit the escaped $, so log an error in all other cases */ - if(strcmp(temp_buffer, "")) - logit(NSLOG_RUNTIME_WARNING, TRUE, "Warning: An error occurred processing macro '%s'!\n", temp_buffer); + /* the error tells the user that the macro is valid, but value fetching contained error*/ + if(strcmp(temp_buffer, "")) { + log_debug_info(DEBUGL_MACROS, 2, " Warning: Error grabbing macro '%s' value '%s'! Maybe used in the wrong scope? Check the docs.\n", temp_buffer, selected_macro ? selected_macro : "" ); +#ifdef NSCORE + if (keep_unknown_macros == FALSE) { + logit(NSLOG_RUNTIME_WARNING, TRUE, "Warning: Error grabbing macro '%s' value '%s'! Maybe used in the wrong scope? Check the docs.\n", temp_buffer, selected_macro ? selected_macro : "" ); + } +#endif + } if (free_macro == TRUE) my_free(selected_macro); | ||
[+] | Changed | icinga-1.8.6.tar.bz2/common/objects.c ^ |
@@ -64,6 +64,7 @@ module *module_list = NULL, *module_list_tail = NULL; skiplist *object_skiplists[NUM_OBJECT_SKIPLISTS]; +static int object_skiplists_valid = 0; #ifdef NSCORE @@ -106,10 +107,8 @@ /******************************************************************/ int init_object_skiplists(void) { - int x = 0; - - for (x = 0; x < NUM_OBJECT_SKIPLISTS; x++) - object_skiplists[x] = NULL; + if (object_skiplists_valid) + free_object_skiplists(); object_skiplists[HOST_SKIPLIST] = skiplist_new(15, 0.5, FALSE, FALSE, skiplist_compare_host); object_skiplists[SERVICE_SKIPLIST] = skiplist_new(15, 0.5, FALSE, FALSE, skiplist_compare_service); @@ -128,6 +127,8 @@ object_skiplists[MODULE_SKIPLIST] = skiplist_new(10, 0.5, FALSE, FALSE, skiplist_compare_module); + object_skiplists_valid = 1; + return OK; } @@ -139,6 +140,8 @@ for (x = 0; x < NUM_OBJECT_SKIPLISTS; x++) skiplist_free(&object_skiplists[x]); + object_skiplists_valid = 0; + return OK; } | ||
[+] | Changed | icinga-1.8.6.tar.bz2/configure ^ |
@@ -2456,9 +2456,9 @@ PKG_NAME=icinga-core -PKG_VERSION="1.8.4" +PKG_VERSION="1.8.6" PKG_HOME_URL="http://www.icinga.org/" -PKG_REL_DATE="01-13-2013" +PKG_REL_DATE="02-11-2014" ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do | ||
[+] | Changed | icinga-1.8.6.tar.bz2/configure.in ^ |
@@ -9,9 +9,9 @@ AC_PREFIX_DEFAULT(/usr/local/icinga) PKG_NAME=icinga-core -PKG_VERSION="1.8.4" +PKG_VERSION="1.8.6" PKG_HOME_URL="http://www.icinga.org/" -PKG_REL_DATE="01-13-2013" +PKG_REL_DATE="02-11-2014" dnl Figure out how to invoke "install" and what install options to use. AC_PROG_INSTALL | ||
[+] | Changed | icinga-1.8.6.tar.bz2/html/main.html ^ |
@@ -18,9 +18,9 @@ </div> <div id="currentversioninfo"> -<div class="version">Version 1.8.4</div> -<div class="releasedate">January 13, 2013</div> -<div class="whatsnew"><a href="docs/en/whatsnew.html">Read what's new in Icinga 1.8.4</a></div> +<div class="version">Version 1.8.6</div> +<div class="releasedate">Februar 11, 2014</div> +<div class="whatsnew"><a href="docs/en/whatsnew.html">Read what's new in Icinga 1.8.6</a></div> </div> <div id="developer"> | ||
[+] | Changed | icinga-1.8.6.tar.bz2/icinga.spec ^ |
@@ -6,7 +6,7 @@ # # ExclusiveDist: el5 el6 -%define revision 1 +%define revision 5 %define logmsg logger -t %{name}/rpm @@ -20,13 +20,13 @@ Summary: Open Source host, service and network monitoring program Name: icinga -Version: 1.8.4 +Version: 1.8.6 Release: %{revision}%{?dist} License: GPLv2 Group: Applications/System URL: http://www.icinga.org/ -Source0: http://dl.sf.net/icinga/icinga-%{version}.tar.gz +Source0: http://downloads.sourceforge.net/project/%{name}/%{name}/%{version}/%{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRequires: gcc @@ -64,13 +64,26 @@ %package devel Summary: Provides include files that Icinga-related applications may compile against -Group: Development/Libraries/C and C++ +Group: Development/Libraries Requires: %{name} = %{version} %description devel This package provides include files that Icinga-related applications may compile against. +%package idoutils +Summary: transitional package, use idoutils-libdbi-* instead +Group: Applications/System +Requires: %{name} = %{version}-%{release} +Requires: %{name}-idoutils-libdbi-mysql + +%description idoutils +Transitional package. Idoutils has been splitted into +idoutils-libdbi-mysql and idoutils-libdbi-pgsql. Use one +of these. This package pulls in idoutils-libdbi-mysql. +This package can be safely uninstalled, it provides no +files and nothing depends on it. + %package idoutils-libdbi-mysql Summary: database broker module for %{name} Group: Applications/System @@ -105,6 +118,14 @@ %prep %setup -qn %{name}-%{version} +cat << EOF > README.idoutils.transitional +Transitional package. Idoutils has been splitted into +idoutils-libdbi-mysql and idoutils-libdbi-pgsql. Use one +of these. This package pulls in idoutils-libdbi-mysql. +This package can be safely uninstalled, it provides no +files and nothing depends on it. +EOF + %build %configure \ --prefix=%{_datadir}/%{name} \ @@ -222,14 +243,14 @@ # cgi.cfg luckily knows where icinga.cfg is and does not need an update # retention.dat, objects.cache, objects.precache, status.dat, cmdfile, pidfile, checkresults %{__perl} -pi -e ' - s|/var/icinga/retention.dat|%{spooldir}/retention.dat|; - s|/var/icinga/objects.precache|%{spooldir}/objects.precache|; - s|/var/icinga/objects.cache|%{spooldir}/objects.cache|; - s|/var/icinga/status.dat|%{spooldir}/status.dat|; - s|/var/icinga/rw/icinga.cmd|%{spooldir}/cmd/icinga.cmd|; - s|/var/icinga/icinga.pid|/var/run/icinga.pid|; + s|/var/icinga/retention.dat|%{spooldir}/retention.dat|; + s|/var/icinga/objects.precache|%{spooldir}/objects.precache|; + s|/var/icinga/objects.cache|%{spooldir}/objects.cache|; + s|/var/icinga/status.dat|%{spooldir}/status.dat|; + s|/var/icinga/rw/icinga.cmd|%{spooldir}/cmd/icinga.cmd|; + s|/var/icinga/icinga.pid|/var/run/icinga.pid|; s|/var/icinga/checkresults|%{spooldir}/checkresults|; - ' /etc/icinga/icinga.cfg + ' /etc/icinga/icinga.cfg # start icinga /sbin/service icinga start &>/dev/null || : @@ -331,8 +352,8 @@ %attr(755,-,-) %{_libdir}/icinga/p1.pl %{_libdir}/%{name}/eventhandlers %defattr(-,icinga,icinga,-) -%{logdir} -%{logdir}/archives +%dir %{logdir} +%dir %{logdir}/archives %dir %{_localstatedir}/spool/%{name} %dir %{_localstatedir}/spool/%{name}/checkresults %attr(2755,icinga,icingacmd) %{_localstatedir}/spool/%{name}/cmd @@ -382,6 +403,10 @@ %defattr(-,root,root) %{_includedir}/%{name}/ +%files idoutils +%defattr(-,root,root) +%doc README.idoutils.transitional + %files idoutils-libdbi-mysql %defattr(-,root,root,-) %doc README LICENSE Changelog UPGRADING module/idoutils/db README.RHEL README.RHEL.idoutils @@ -408,6 +433,24 @@ %changelog +* Tue Feb 11 2013 Ricardo Bartels <ricardo@bitchbrothers.com> - 1.8.6-1 +- 1.8.6 bump + +* Fri Dec 13 2013 Ricardo Bartels <ricardo@bitchbrothers.com> - 1.8.5-1 +- 1.8.5 bump + +* Tue Mar 05 2013 Rene Koch <r.koch@ovido.at> - 1.8.4-5 +- fixed double logdir/gui/ definitions in icinga and icinga-gui + +* Fri Feb 15 2013 Michael Friedrich <michael.friedrich@netways.de> - 1.8.4-4 +- fix rpmlint errors/warnings + +* Wed Feb 06 2013 Michael Friedrich <michael.friedrich@netways.de> - 1.8.4-3 +- add idoutils as transitional package (thx Stefan Marx, Michael Grüner) + +* Fri Feb 01 2013 Michael Friedrich <michael.friedrich@netways.de> - 1.8.4-2 +- fix sf.net url + * Sun Jan 13 2013 Michael Friedrich <michael.friedrich@netways.de> - 1.8.4-1 - 1.8.4 bump | ||
[+] | Changed | icinga-1.8.6.tar.bz2/include/common.h ^ |
@@ -27,8 +27,8 @@ #define PROGRAM_NAME "Icinga" #define PROGRAM_NAME_UC "ICINGA" #define PROGRAM_NAME_LC "icinga" -#define PROGRAM_VERSION "1.8.4" -#define PROGRAM_MODIFICATION_DATE "01-13-2013" +#define PROGRAM_VERSION "1.8.6" +#define PROGRAM_MODIFICATION_DATE "02-11-2014" /*#define DEBUG_CHECK_IPC 1 */ /*#define DEBUG_CHECK_IPC2 1*/ | ||
[+] | Changed | icinga-1.8.6.tar.bz2/module/idoutils/include/common.h ^ |
@@ -22,8 +22,8 @@ #define LOG2IDO_NAME "LOG2IDO" /* only one space for update-version matching */ -#define IDO_DATE "01-13-2013" -#define IDO_VERSION "1.8.4" +#define IDO_DATE "02-11-2014" +#define IDO_VERSION "1.8.6" #define IDO_SCHEMA_VERSION "1.8.0" | ||
[+] | Changed | icinga-1.8.6.tar.bz2/module/idoutils/src/dbqueries.c ^ |
@@ -5259,7 +5259,12 @@ if ((result = ido2db_db_query(idi, query)) == IDO_OK) { if (idi->dbinfo.dbi_result != NULL) { if (dbi_result_next_row(idi->dbinfo.dbi_result)) { - configfile_id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "configfile_id"); + /* this condition should never happen, as libdbi UPDATE and affected rows + * should take care of it. it seems that newer mysql versions got problems + * with libdbi (https://dev.icinga.org/issues/3728) so we return the selected id + * as fallback here + */ + *id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "configfile_id"); mysql_update = TRUE; } else { mysql_update = FALSE; @@ -5744,7 +5749,12 @@ if ((result = ido2db_db_query(idi, query)) == IDO_OK) { if (idi->dbinfo.dbi_result != NULL) { if (dbi_result_next_row(idi->dbinfo.dbi_result)) { - host_id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "host_id"); + /* this condition should never happen, as libdbi UPDATE and affected rows + * should take care of it. it seems that newer mysql versions got problems + * with libdbi (https://dev.icinga.org/issues/3728) so we return the selected id + * as fallback here + */ + *id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "host_id"); mysql_update = TRUE; } else { mysql_update = FALSE; @@ -6711,7 +6721,12 @@ if ((result = ido2db_db_query(idi, query)) == IDO_OK) { if (idi->dbinfo.dbi_result != NULL) { if (dbi_result_next_row(idi->dbinfo.dbi_result)) { - hostgroup_id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "hostgroup_id"); + /* this condition should never happen, as libdbi UPDATE and affected rows + * should take care of it. it seems that newer mysql versions got problems + * with libdbi (https://dev.icinga.org/issues/3728) so we return the selected id + * as fallback here + */ + *id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "hostgroup_id"); mysql_update = TRUE; } else { mysql_update = FALSE; @@ -7161,7 +7176,12 @@ if ((result = ido2db_db_query(idi, query)) == IDO_OK) { if (idi->dbinfo.dbi_result != NULL) { if (dbi_result_next_row(idi->dbinfo.dbi_result)) { - service_id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "service_id"); + /* this condition should never happen, as libdbi UPDATE and affected rows + * should take care of it. it seems that newer mysql versions got problems + * with libdbi (https://dev.icinga.org/issues/3728) so we return the selected id + * as fallback here + */ + *id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "service_id"); mysql_update = TRUE; } else { mysql_update = FALSE; @@ -7917,7 +7937,12 @@ if ((result = ido2db_db_query(idi, query)) == IDO_OK) { if (idi->dbinfo.dbi_result != NULL) { if (dbi_result_next_row(idi->dbinfo.dbi_result)) { - servicegroup_id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "servicegroup_id"); + /* this condition should never happen, as libdbi UPDATE and affected rows + * should take care of it. it seems that newer mysql versions got problems + * with libdbi (https://dev.icinga.org/issues/3728) so we return the selected id + * as fallback here + */ + *id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "servicegroup_id"); mysql_update = TRUE; } else { mysql_update = FALSE; @@ -8776,7 +8801,12 @@ if ((result = ido2db_db_query(idi, query)) == IDO_OK) { if (idi->dbinfo.dbi_result != NULL) { if (dbi_result_next_row(idi->dbinfo.dbi_result)) { - hostescalation_id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "hostescalation_id"); + /* this condition should never happen, as libdbi UPDATE and affected rows + * should take care of it. it seems that newer mysql versions got problems + * with libdbi (https://dev.icinga.org/issues/3728) so we return the selected id + * as fallback here + */ + *id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "hostescalation_id"); mysql_update = TRUE; } else { mysql_update = FALSE; @@ -9396,7 +9426,12 @@ if ((result = ido2db_db_query(idi, query)) == IDO_OK) { if (idi->dbinfo.dbi_result != NULL) { if (dbi_result_next_row(idi->dbinfo.dbi_result)) { - serviceescalation_id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "serviceescalation_id"); + /* this condition should never happen, as libdbi UPDATE and affected rows + * should take care of it. it seems that newer mysql versions got problems + * with libdbi (https://dev.icinga.org/issues/3728) so we return the selected id + * as fallback here + */ + *id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "serviceescalation_id"); mysql_update = TRUE; } else { mysql_update = FALSE; @@ -10194,7 +10229,12 @@ if ((result = ido2db_db_query(idi, query)) == IDO_OK) { if (idi->dbinfo.dbi_result != NULL) { if (dbi_result_next_row(idi->dbinfo.dbi_result)) { - timeperiod_id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "timeperiod_id"); + /* this condition should never happen, as libdbi UPDATE and affected rows + * should take care of it. it seems that newer mysql versions got problems + * with libdbi (https://dev.icinga.org/issues/3728) so we return the selected id + * as fallback here + */ + *id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "timeperiod_id"); mysql_update = TRUE; } else { mysql_update = FALSE; @@ -10635,7 +10675,12 @@ if ((result = ido2db_db_query(idi, query)) == IDO_OK) { if (idi->dbinfo.dbi_result != NULL) { if (dbi_result_next_row(idi->dbinfo.dbi_result)) { - contact_id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "contact_id"); + /* this condition should never happen, as libdbi UPDATE and affected rows + * should take care of it. it seems that newer mysql versions got problems + * with libdbi (https://dev.icinga.org/issues/3728) so we return the selected id + * as fallback here + */ + *id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "contact_id"); mysql_update = TRUE; } else { mysql_update = FALSE; @@ -11922,7 +11967,12 @@ if ((result = ido2db_db_query(idi, query)) == IDO_OK) { if (idi->dbinfo.dbi_result != NULL) { if (dbi_result_next_row(idi->dbinfo.dbi_result)) { - contactgroup_id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "contactgroup_id"); + /* this condition should never happen, as libdbi UPDATE and affected rows + * should take care of it. it seems that newer mysql versions got problems + * with libdbi (https://dev.icinga.org/issues/3728) so we return the selected id + * as fallback here + */ + *id = dbi_result_get_ulonglong(idi->dbinfo.dbi_result, "contactgroup_id"); mysql_update = TRUE; } else { mysql_update = FALSE; | ||
[+] | Changed | icinga-1.8.6.tar.bz2/module/idoutils/src/idomod.c ^ |
@@ -65,6 +65,8 @@ int idomod_open_debug_log(void); int idomod_close_debug_log(void); +static char *broker_data_temp_buffer; + extern int errno; /**** Icinga VARIABLES ****/ @@ -242,6 +244,8 @@ /* save unprocessed data to buffer file */ idomod_save_unprocessed_data(idomod_buffer_file); + free(idomod_buffer_file); + idomod_buffer_file = NULL; /* clear sink buffer */ idomod_sink_buffer_deinit(&sinkbuf); @@ -255,6 +259,20 @@ /* close debug log */ idomod_close_debug_log(); + /* free variables */ + free(idomod_instance_name); + idomod_instance_name = NULL; + + free(idomod_sink_name); + idomod_sink_name = NULL; + + free(idomod_sink_rotation_command); + idomod_sink_rotation_command = NULL; + + /* free temp buffer */ + free(broker_data_temp_buffer); + broker_data_temp_buffer = NULL; + return IDO_OK; } @@ -1238,7 +1256,7 @@ /* handles brokered event data */ int idomod_broker_data(int event_type, void *data) { //char temp_buffer[IDOMOD_MAX_BUFLEN]; - static char *temp_buffer; + char *temp_buffer; ido_dbuf dbuf; int write_to_sink = IDO_TRUE; host *temp_host = NULL; @@ -1280,12 +1298,14 @@ int last_state = -1; int last_hard_state = -1; - if (temp_buffer == NULL) { - temp_buffer = (char *)malloc(IDOMOD_MAX_BUFLEN); - if (temp_buffer == NULL) + if (broker_data_temp_buffer == NULL) { + broker_data_temp_buffer = (char *)malloc(IDOMOD_MAX_BUFLEN); + if (broker_data_temp_buffer == NULL) return 0; } + temp_buffer = broker_data_temp_buffer; + idomod_log_debug_info(IDOMOD_DEBUGL_PROCESSINFO, 2, "idomod_broker_data() start\n"); @@ -3321,10 +3341,6 @@ /* initialize dynamic buffer (2KB chunk size) */ ido_dbuf_init(&dbuf, 2048); - /* initialize buffers */ - for (x = 0; x < OBJECTCONFIG_ES_ITEMS; x++) - es[x] = NULL; - /****** dump command config ******/ for (temp_command = command_list; temp_command != NULL; temp_command = temp_command->next) { @@ -3347,12 +3363,9 @@ /* write data to sink */ temp_buffer[sizeof(temp_buffer)-1] = '\x0'; idomod_write_to_sink(temp_buffer, IDO_TRUE, IDO_TRUE); - } - /* free buffers */ - for (x = 0; x < OBJECTCONFIG_ES_ITEMS; x++) { - free(es[x]); - es[x] = NULL; + free(es[0]); + free(es[1]); } /****** dump timeperiod config ******/ @@ -3375,6 +3388,9 @@ temp_buffer[sizeof(temp_buffer)-1] = '\x0'; ido_dbuf_strcat(&dbuf, temp_buffer); + free(es[0]); + free(es[1]); + /* dump timeranges for each day */ for (x = 0; x < 7; x++) { for (temp_timerange = temp_timeperiod->days[x]; temp_timerange != NULL; temp_timerange = temp_timerange->next) { @@ -3404,12 +3420,6 @@ } - /* free buffers */ - for (x = 0; x < OBJECTCONFIG_ES_ITEMS; x++) { - free(es[x]); - es[x] = NULL; - } - /****** dump contact config ******/ for (temp_contact = contact_list; temp_contact != NULL; temp_contact = temp_contact->next) { @@ -3477,7 +3487,11 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; + free(es[1]); + free(es[2]); + free(es[3]); + free(es[4]); + free(es[5]); /* dump addresses for each contact */ for (x = 0; x < MAX_CONTACT_ADDRESSES; x++) { @@ -3494,7 +3508,6 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; } /* dump host notification commands for each contact */ @@ -3511,7 +3524,6 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; } /* dump service notification commands for each contact */ @@ -3528,7 +3540,6 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; } /* dump customvars */ @@ -3547,10 +3558,8 @@ temp_buffer[sizeof(temp_buffer)-1] = '\x0'; ido_dbuf_strcat(&dbuf, temp_buffer); - for (x = 0; x < 2; x++) { - free(es[x]); - es[x] = NULL; - } + free(es[0]); + free(es[1]); } snprintf(temp_buffer, sizeof(temp_buffer) - 1 @@ -3566,12 +3575,6 @@ } - /* free buffers */ - for (x = 0; x < OBJECTCONFIG_ES_ITEMS; x++) { - free(es[x]); - es[x] = NULL; - } - /****** dump contactgroup config ******/ for (temp_contactgroup = contactgroup_list; temp_contactgroup != NULL; temp_contactgroup = temp_contactgroup->next) { @@ -3593,7 +3596,7 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; + free(es[1]); /* dump members for each contactgroup */ for (temp_contactsmember = temp_contactgroup->members; temp_contactsmember != NULL; temp_contactsmember = temp_contactsmember->next) { @@ -3609,7 +3612,6 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; } snprintf(temp_buffer, sizeof(temp_buffer) - 1 @@ -3625,12 +3627,6 @@ } - /* free buffers */ - for (x = 0; x < OBJECTCONFIG_ES_ITEMS; x++) { - free(es[x]); - es[x] = NULL; - } - /****** dump host config ******/ for (temp_host = host_list; temp_host != NULL; temp_host = temp_host->next) { @@ -3785,8 +3781,8 @@ temp_buffer[sizeof(temp_buffer)-1] = '\x0'; ido_dbuf_strcat(&dbuf, temp_buffer); - free(es[0]); - es[0] = NULL; + for (x = 0; x < 16; x++) + free(es[x]); /* dump parent hosts */ for (temp_hostsmember = temp_host->parent_hosts; temp_hostsmember != NULL; temp_hostsmember = temp_hostsmember->next) { @@ -3802,7 +3798,6 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; } /* dump contactgroups */ @@ -3819,7 +3814,6 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; } /* dump individual contacts */ @@ -3836,7 +3830,6 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; } @@ -3856,10 +3849,8 @@ temp_buffer[sizeof(temp_buffer)-1] = '\x0'; ido_dbuf_strcat(&dbuf, temp_buffer); - for (x = 0; x < 2; x++) { - free(es[x]); - es[x] = NULL; - } + free(es[0]); + free(es[1]); } snprintf(temp_buffer, sizeof(temp_buffer) - 1 @@ -3875,12 +3866,6 @@ } - /* free buffers */ - for (x = 0; x < OBJECTCONFIG_ES_ITEMS; x++) { - free(es[x]); - es[x] = NULL; - } - /****** dump hostgroup config ******/ for (temp_hostgroup = hostgroup_list; temp_hostgroup != NULL; temp_hostgroup = temp_hostgroup->next) { @@ -3902,7 +3887,7 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; + free(es[1]); /* dump members for each hostgroup */ for (temp_hostsmember = temp_hostgroup->members; temp_hostsmember != NULL; temp_hostsmember = temp_hostsmember->next) { @@ -3918,7 +3903,6 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; } snprintf(temp_buffer, sizeof(temp_buffer) - 1 @@ -3934,12 +3918,6 @@ } - /* free buffers */ - for (x = 0; x < OBJECTCONFIG_ES_ITEMS; x++) { - free(es[x]); - es[x] = NULL; - } - /****** dump service config ******/ for (temp_service = service_list; temp_service != NULL; temp_service = temp_service->next) { @@ -4068,8 +4046,8 @@ temp_buffer[sizeof(temp_buffer)-1] = '\x0'; ido_dbuf_strcat(&dbuf, temp_buffer); - free(es[0]); - es[0] = NULL; + for (x = 0; x < 13; x++) + free(es[x]); /* dump contactgroups */ for (temp_contactgroupsmember = temp_service->contact_groups; temp_contactgroupsmember != NULL; temp_contactgroupsmember = temp_contactgroupsmember->next) { @@ -4085,7 +4063,6 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; } /* dump individual contacts */ @@ -4102,7 +4079,6 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; } /* dump customvars */ @@ -4121,10 +4097,8 @@ temp_buffer[sizeof(temp_buffer)-1] = '\x0'; ido_dbuf_strcat(&dbuf, temp_buffer); - for (x = 0; x < 2; x++) { - free(es[x]); - es[x] = NULL; - } + free(es[0]); + free(es[1]); } snprintf(temp_buffer, sizeof(temp_buffer) - 1 @@ -4140,12 +4114,6 @@ } - /* free buffers */ - for (x = 0; x < OBJECTCONFIG_ES_ITEMS; x++) { - free(es[x]); - es[x] = NULL; - } - /****** dump servicegroup config ******/ for (temp_servicegroup = servicegroup_list; temp_servicegroup != NULL; temp_servicegroup = temp_servicegroup->next) { @@ -4168,8 +4136,6 @@ free(es[0]); free(es[1]); - es[0] = NULL; - es[1] = NULL; /* dump members for each servicegroup */ for (temp_servicesmember = temp_servicegroup->members; temp_servicesmember != NULL; temp_servicesmember = temp_servicesmember->next) { @@ -4188,8 +4154,6 @@ free(es[0]); free(es[1]); - es[0] = NULL; - es[1] = NULL; } snprintf(temp_buffer, sizeof(temp_buffer) - 1 @@ -4205,12 +4169,6 @@ } - /* free buffers */ - for (x = 0; x < OBJECTCONFIG_ES_ITEMS; x++) { - free(es[x]); - es[x] = NULL; - } - /****** dump host escalation config ******/ for (temp_hostescalation = hostescalation_list; temp_hostescalation != NULL; temp_hostescalation = temp_hostescalation->next) { @@ -4244,7 +4202,7 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; + free(es[1]); /* dump contactgroups */ for (temp_contactgroupsmember = temp_hostescalation->contact_groups; temp_contactgroupsmember != NULL; temp_contactgroupsmember = temp_contactgroupsmember->next) { @@ -4260,7 +4218,6 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; } /* dump individual contacts */ @@ -4277,7 +4234,6 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; } snprintf(temp_buffer, sizeof(temp_buffer) - 1 @@ -4293,12 +4249,6 @@ } - /* free buffers */ - for (x = 0; x < OBJECTCONFIG_ES_ITEMS; x++) { - free(es[x]); - es[x] = NULL; - } - /****** dump service escalation config ******/ for (temp_serviceescalation = serviceescalation_list; temp_serviceescalation != NULL; temp_serviceescalation = temp_serviceescalation->next) { @@ -4337,7 +4287,8 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; + free(es[1]); + free(es[2]); /* dump contactgroups */ for (temp_contactgroupsmember = temp_serviceescalation->contact_groups; temp_contactgroupsmember != NULL; temp_contactgroupsmember = temp_contactgroupsmember->next) { @@ -4353,7 +4304,6 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; } /* dump individual contacts */ @@ -4370,7 +4320,6 @@ ido_dbuf_strcat(&dbuf, temp_buffer); free(es[0]); - es[0] = NULL; } snprintf(temp_buffer, sizeof(temp_buffer) - 1 @@ -4386,12 +4335,6 @@ } - /* free buffers */ - for (x = 0; x < OBJECTCONFIG_ES_ITEMS; x++) { - free(es[x]); - es[x] = NULL; - } - /****** dump host dependency config ******/ for (temp_hostdependency = hostdependency_list; temp_hostdependency != NULL; temp_hostdependency = temp_hostdependency->next) { @@ -4426,6 +4369,10 @@ temp_buffer[sizeof(temp_buffer)-1] = '\x0'; ido_dbuf_strcat(&dbuf, temp_buffer); + free(es[0]); + free(es[1]); + free(es[2]); + snprintf(temp_buffer, sizeof(temp_buffer) - 1 , "%d\n\n" , IDO_API_ENDDATA @@ -4439,12 +4386,6 @@ } - /* free buffers */ - for (x = 0; x < OBJECTCONFIG_ES_ITEMS; x++) { - free(es[x]); - es[x] = NULL; - } - /****** dump service dependency config ******/ for (temp_servicedependency = servicedependency_list; temp_servicedependency != NULL; temp_servicedependency = temp_servicedependency->next) { @@ -4487,6 +4428,12 @@ temp_buffer[sizeof(temp_buffer)-1] = '\x0'; ido_dbuf_strcat(&dbuf, temp_buffer); + free(es[0]); + free(es[1]); + free(es[2]); + free(es[3]); + free(es[4]); + snprintf(temp_buffer, sizeof(temp_buffer) - 1 , "%d\n\n" , IDO_API_ENDDATA @@ -4500,12 +4447,6 @@ } - /* free buffers */ - for (x = 0; x < OBJECTCONFIG_ES_ITEMS; x++) { - free(es[x]); - es[x] = NULL; - } - idomod_log_debug_info(IDOMOD_DEBUGL_PROCESSINFO, 2, "idomod_write_object_config() end\n"); return IDO_OK; @@ -4786,6 +4727,9 @@ if (idomod_debug_file_fp != NULL) fclose(idomod_debug_file_fp); + free(idomod_debug_file); + idomod_debug_file = NULL; + idomod_debug_file_fp = NULL; return IDO_OK; | ||
[+] | Changed | icinga-1.8.6.tar.bz2/rc.ido2db.in ^ |
@@ -14,7 +14,7 @@ # Description: Icinga Data Out Daemon ### END INIT INFO -# chkconfig: 345 99 01 +# chkconfig: 345 98 01 # # File : ido2db # | ||
[+] | Changed | icinga-1.8.6.tar.bz2/update-version ^ |
@@ -10,10 +10,10 @@ fi # Current version number -CURRENTVERSION=1.8.4 +CURRENTVERSION=1.8.6 # Last date -LASTDATE=01-13-2013 +LASTDATE=02-11-2014 if [ "x$1" = "x" ] then | ||
[+] | Changed | icinga-1.8.6.tar.bz2/xdata/xodtemplate.c ^ |
@@ -1128,13 +1128,12 @@ xod_begin_def(hostescalation); new_hostescalation->first_notification = -2; new_hostescalation->last_notification = -2; -#ifdef USE_ST_BASED_ESCAL_RANGE + /* state based escalation ranges */ new_hostescalation->first_down_notification = -2; new_hostescalation->last_down_notification = -2; new_hostescalation->first_unreachable_notification = -2; new_hostescalation->last_unreachable_notification = -2; new_hostescalation->notification_interval = -2.0; -#endif break; case XODTEMPLATE_HOSTEXTINFO: |