Code

Fix Bug #1862300: check_ntp_time segfault in 1.4.11 (Also apply to check_ntp)
authorThomas Guyot-Sionnest <dermoth@users.sourceforge.net>
Sat, 5 Jan 2008 14:09:29 +0000 (14:09 +0000)
committerThomas Guyot-Sionnest <dermoth@users.sourceforge.net>
Sat, 5 Jan 2008 14:09:29 +0000 (14:09 +0000)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1887 f882894a-f735-0410-b71e-b25c423dba1c

NEWS
plugins/check_ntp.c
plugins/check_ntp_time.c

diff --git a/NEWS b/NEWS
index 485693afe23116bd0dd1642182b2837ab74ecec8..a58c4cecb8e2664532dcb88b835777aa5251e402 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,7 @@ This file documents the major additions and syntax changes between releases.
        check_tcp now returns UNKNOWN with invalid hostname
        New check_icmp -s option to specify the source IP address
        check_dns now sorts addresses for testing results for more than one returned IP (Matthias Urlichs)
+       Fix segfault in check_ntp_time and (deprecated) check_ntp. (Bug #1862300)
 
 1.4.11 13th December 2007
        Fixed check_http regression in 1.4.10 where following redirects to
index 86e3d0985bf4f2ee57fbf020844dfa150d8a060a..b474d9a81c5a6313624f6ca4b35237ab521418ae 100644 (file)
@@ -329,7 +329,7 @@ int best_offset_server(const ntp_server_results *slist, int nservers){
                /* if we haven't reached the current list's end, move everyone
                 * over one to the right, and insert the new candidate */
                if(i<csize){
-                       for(j=5; j>i; j--){
+                       for(j=4; j>i; j--){
                                candidates[j]=candidates[j-1];
                        }
                }
@@ -392,6 +392,7 @@ double offset_request(const char *host, int *status){
        servers=(ntp_server_results*)malloc(sizeof(ntp_server_results)*num_hosts);
        if(servers==NULL) die(STATE_UNKNOWN, "can not allocate server array");
        memset(servers, 0, sizeof(ntp_server_results)*num_hosts);
+       DBG(printf("Found %d peers to check\n", num_hosts));
 
        /* setup each socket for writing, and the corresponding struct pollfd */
        ai_tmp=ai;
@@ -837,11 +838,11 @@ void print_help(void){
 
        printf ("Copyright (c) 2006 Sean Finney\n");
        printf (COPYRIGHT, copyright, email);
-  
-  printf ("%s\n", _("This plugin checks the selected ntp server"));
 
-  printf ("\n\n");
-  
+       printf ("%s\n", _("This plugin checks the selected ntp server"));
+
+       printf ("\n\n");
+
        print_usage();
        printf (_(UT_HELP_VRSN));
        printf (_(UT_HOST_PORT), 'p', "123");
@@ -871,11 +872,17 @@ void print_help(void){
        printf("  %s\n", ("./check_ntp -H ntpserv -w 0.5 -c 1 -j -1:100 -k -1:200"));
 
        printf (_(UT_SUPPORT));
+
+       printf("\n");
+       printf ("%s\n", _("WARNING: check_ntp is deprecated. Please use check_ntp_peer or"));
+       printf ("%s\n\n", _("check_ntp_time istead."));
 }
 
 void
 print_usage(void)
 {
-  printf (_("Usage:"));
-  printf(" %s -H <host> [-w <warn>] [-c <crit>] [-j <warn>] [-k <crit>] [-v verbose]\n", progname);
+       printf ("%s\n", _("WARNING: check_ntp is deprecated. Please use check_ntp_peer or"));
+       printf ("%s\n\n", _("check_ntp_time istead."));
+       printf (_("Usage:"));
+       printf(" %s -H <host> [-w <warn>] [-c <crit>] [-j <warn>] [-k <crit>] [-v verbose]\n", progname);
 }
index f414c328891662fc43cd9f27e1a9e5740155f29d..767dcd9494f6cfdd7f7e50b63b2d8db05a569486 100644 (file)
@@ -274,7 +274,7 @@ int best_offset_server(const ntp_server_results *slist, int nservers){
                /* if we haven't reached the current list's end, move everyone
                 * over one to the right, and insert the new candidate */
                if(i<csize){
-                       for(j=5; j>i; j--){
+                       for(j=4; j>i; j--){
                                candidates[j]=candidates[j-1];
                        }
                }
@@ -337,6 +337,7 @@ double offset_request(const char *host, int *status){
        servers=(ntp_server_results*)malloc(sizeof(ntp_server_results)*num_hosts);
        if(servers==NULL) die(STATE_UNKNOWN, "can not allocate server array");
        memset(servers, 0, sizeof(ntp_server_results)*num_hosts);
+       DBG(printf("Found %d peers to check\n", num_hosts));
 
        /* setup each socket for writing, and the corresponding struct pollfd */
        ai_tmp=ai;