Module: monitoring-plugins
 Branch: master
 Commit: 07f9c438f31de7a280e43c4196a32d200ad41fbe
 Author: RincewindsHat <12514511+rincewinds...@users.noreply.github.com>
   Date: Thu Oct 19 12:10:55 2023 +0200
    URL: 
https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=07f9c43

Fixes for -Wsign-compare

---

 lib/utils_base.c       |  2 +-
 lib/utils_base.h       |  2 +-
 lib/utils_cmd.c        |  3 +--
 plugins/check_apt.c    | 17 +++++++++--------
 plugins/check_by_ssh.c | 15 +++++++--------
 plugins/check_curl.c   | 13 ++++++-------
 plugins/check_dns.c    |  6 +++---
 plugins/check_procs.c  |  4 ++--
 plugins/check_snmp.c   | 31 ++++++++++++++++++-------------
 plugins/check_tcp.c    | 14 +++++++-------
 plugins/check_ups.c    |  3 ++-
 plugins/negate.c       |  5 ++---
 plugins/runcmd.c       |  3 +--
 plugins/utils.c        | 10 +++++++++-
 14 files changed, 69 insertions(+), 59 deletions(-)

diff --git a/lib/utils_base.c b/lib/utils_base.c
index f86efbe..f8592f4 100644
--- a/lib/utils_base.c
+++ b/lib/utils_base.c
@@ -37,7 +37,7 @@
 
 monitoring_plugin *this_monitoring_plugin=NULL;
 
-unsigned int timeout_state = STATE_CRITICAL;
+int timeout_state = STATE_CRITICAL;
 unsigned int timeout_interval = DEFAULT_SOCKET_TIMEOUT;
 
 bool _np_state_read_file(FILE *);
diff --git a/lib/utils_base.h b/lib/utils_base.h
index 80b8743..9d4dffe 100644
--- a/lib/utils_base.h
+++ b/lib/utils_base.h
@@ -65,7 +65,7 @@ bool check_range(double, range *);
 int get_status(double, thresholds *);
 
 /* Handle timeouts */
-extern unsigned int timeout_state;
+extern int timeout_state;
 extern unsigned int timeout_interval;
 
 /* All possible characters in a threshold range */
diff --git a/lib/utils_cmd.c b/lib/utils_cmd.c
index cfb2073..7957ec1 100644
--- a/lib/utils_cmd.c
+++ b/lib/utils_cmd.c
@@ -390,13 +390,12 @@ cmd_file_read ( char *filename, output *out, int flags)
 void
 timeout_alarm_handler (int signo)
 {
-       size_t i;
        if (signo == SIGALRM) {
                printf (_("%s - Plugin timed out after %d seconds\n"),
                                                state_text(timeout_state), 
timeout_interval);
 
                long maxfd = mp_open_max();
-               if(_cmd_pids) for(i = 0; i < maxfd; i++) {
+               if(_cmd_pids) for(long int i = 0; i < maxfd; i++) {
                        if(_cmd_pids[i] != 0) kill(_cmd_pids[i], SIGKILL);
                }
 
diff --git a/plugins/check_apt.c b/plugins/check_apt.c
index fa982ae..290c88e 100644
--- a/plugins/check_apt.c
+++ b/plugins/check_apt.c
@@ -94,7 +94,7 @@ static int stderr_warning = 0;   /* if a cmd issued output on 
stderr */
 static int exec_warning = 0;     /* if a cmd exited non-zero */
 
 int main (int argc, char **argv) {
-       int result=STATE_UNKNOWN, packages_available=0, sec_count=0, i=0;
+       int result=STATE_UNKNOWN, packages_available=0, sec_count=0;
        char **packages_list=NULL, **secpackages_list=NULL;
 
        /* Parse extra opts if any */
@@ -142,10 +142,11 @@ int main (int argc, char **argv) {
                qsort(secpackages_list, sec_count, sizeof(char*), cmpstringp);
                qsort(packages_list, packages_available-sec_count, 
sizeof(char*), cmpstringp);
 
-               for(i = 0; i < sec_count; i++)
+               for(int i = 0; i < sec_count; i++)
                        printf("%s (security)\n", secpackages_list[i]);
+
                if (only_critical == false) {
-                       for(i = 0; i < packages_available - sec_count; i++)
+                       for(int i = 0; i < packages_available - sec_count; i++)
                                printf("%s\n", packages_list[i]);
                }
        }
@@ -320,7 +321,7 @@ int run_upgrade(int *pkgcount, int *secpkgcount, char 
***pkglist, char ***secpkg
         * we may need to switch to the --print-uris output format,
         * in which case the logic here will slightly change.
         */
-       for(i = 0; i < chld_out.lines; i++) {
+       for(size_t i = 0; i < chld_out.lines; i++) {
                if(verbose){
                        printf("%s\n", chld_out.line[i]);
                }
@@ -353,7 +354,7 @@ int run_upgrade(int *pkgcount, int *secpkgcount, char 
***pkglist, char ***secpkg
                stderr_warning=1;
                result = max_state(result, STATE_WARNING);
                if(verbose){
-                       for(i = 0; i < chld_err.lines; i++) {
+                       for(size_t i = 0; i < chld_err.lines; i++) {
                                fprintf(stderr, "%s\n", chld_err.line[i]);
                        }
                }
@@ -367,7 +368,7 @@ int run_upgrade(int *pkgcount, int *secpkgcount, char 
***pkglist, char ***secpkg
 
 /* run an apt-get update (needs root) */
 int run_update(void){
-       int i=0, result=STATE_UNKNOWN;
+       int result=STATE_UNKNOWN;
        struct output chld_out, chld_err;
        char *cmdline;
 
@@ -385,7 +386,7 @@ int run_update(void){
        }
 
        if(verbose){
-               for(i = 0; i < chld_out.lines; i++) {
+               for(size_t i = 0; i < chld_out.lines; i++) {
                        printf("%s\n", chld_out.line[i]);
                }
        }
@@ -395,7 +396,7 @@ int run_update(void){
                stderr_warning=1;
                result = max_state(result, STATE_WARNING);
                if(verbose){
-                       for(i = 0; i < chld_err.lines; i++) {
+                       for(size_t i = 0; i < chld_err.lines; i++) {
                                fprintf(stderr, "%s\n", chld_err.line[i]);
                        }
                }
diff --git a/plugins/check_by_ssh.c b/plugins/check_by_ssh.c
index 1f5f72d..2a23b39 100644
--- a/plugins/check_by_ssh.c
+++ b/plugins/check_by_ssh.c
@@ -68,7 +68,6 @@ main (int argc, char **argv)
        char *status_text;
        int cresult;
        int result = STATE_UNKNOWN;
-       int i;
        time_t local_time;
        FILE *fp = NULL;
        output chld_out, chld_err;
@@ -96,7 +95,7 @@ main (int argc, char **argv)
        /* run the command */
        if (verbose) {
                printf ("Command: %s\n", commargv[0]);
-               for (i=1; i<commargc; i++)
+               for (int i = 1; i < commargc; i++)
                        printf ("Argument %i: %s\n", i, commargv[i]);
        }
 
@@ -110,9 +109,9 @@ main (int argc, char **argv)
        }
 
        if (verbose) {
-               for(i = 0; i < chld_out.lines; i++)
+               for(size_t i = 0; i < chld_out.lines; i++)
                        printf("stdout: %s\n", chld_out.line[i]);
-               for(i = 0; i < chld_err.lines; i++)
+               for(size_t i = 0; i < chld_err.lines; i++)
                        printf("stderr: %s\n", chld_err.line[i]);
        }
 
@@ -122,7 +121,7 @@ main (int argc, char **argv)
                skip_stderr = chld_err.lines;
 
        /* UNKNOWN or worse if (non-skipped) output found on stderr */
-       if(chld_err.lines > skip_stderr) {
+       if(chld_err.lines > (size_t)skip_stderr) {
                printf (_("Remote command execution failed: %s\n"),
                        chld_err.line[skip_stderr]);
                if ( warn_on_stderr ) 
@@ -134,8 +133,8 @@ main (int argc, char **argv)
        /* this is simple if we're not supposed to be passive.
         * Wrap up quickly and keep the tricks below */
        if(!passive) {
-               if (chld_out.lines > skip_stdout)
-                       for (i = skip_stdout; i < chld_out.lines; i++)
+               if (chld_out.lines > (size_t)skip_stdout)
+                       for (size_t i = skip_stdout; i < chld_out.lines; i++)
                                puts (chld_out.line[i]);
                else
                        printf (_("%s - check_by_ssh: Remote command '%s' 
returned status %d\n"),
@@ -156,7 +155,7 @@ main (int argc, char **argv)
 
        local_time = time (NULL);
        commands = 0;
-       for(i = skip_stdout; i < chld_out.lines; i++) {
+       for(size_t i = skip_stdout; i < chld_out.lines; i++) {
                status_text = chld_out.line[i++];
                if (i == chld_out.lines || strstr (chld_out.line[i], "STATUS 
CODE: ") == NULL)
                        die (STATE_UNKNOWN, _("%s: Error parsing output\n"), 
progname);
diff --git a/plugins/check_curl.c b/plugins/check_curl.c
index 153e492..9c0dc34 100644
--- a/plugins/check_curl.c
+++ b/plugins/check_curl.c
@@ -1186,16 +1186,16 @@ int
 uri_strcmp (const UriTextRangeA range, const char* s)
 {
   if (!range.first) return -1;
-  if (range.afterLast - range.first < strlen (s)) return -1;
-  return strncmp (s, range.first, min( range.afterLast - range.first, strlen 
(s)));
+  if ( (size_t)(range.afterLast - range.first) < strlen (s) ) return -1;
+  return strncmp (s, range.first, min( (size_t)(range.afterLast - 
range.first), strlen (s)));
 }
 
 char*
 uri_string (const UriTextRangeA range, char* buf, size_t buflen)
 {
   if (!range.first) return "(null)";
-  strncpy (buf, range.first, max (buflen-1, range.afterLast - range.first));
-  buf[max (buflen-1, range.afterLast - range.first)] = '\0';
+  strncpy (buf, range.first, max (buflen-1, (size_t)(range.afterLast - 
range.first)));
+  buf[max (buflen-1, (size_t)(range.afterLast - range.first))] = '\0';
   buf[range.afterLast - range.first] = '\0';
   return buf;
 }
@@ -2368,8 +2368,7 @@ remove_newlines (char *s)
 char *
 get_header_value (const struct phr_header* headers, const size_t nof_headers, 
const char* header)
 {
-  int i;
-  for( i = 0; i < nof_headers; i++ ) {
+  for(size_t i = 0; i < nof_headers; i++ ) {
     if(headers[i].name != NULL && strncasecmp( header, headers[i].name, max( 
headers[i].name_len, 4 ) ) == 0 ) {
       return strndup( headers[i].value, headers[i].value_len );
     }
@@ -2471,7 +2470,7 @@ check_document_dates (const curlhelp_write_curlbuf 
*header_buf, char (*msg)[DEFA
 int
 get_content_length (const curlhelp_write_curlbuf* header_buf, const 
curlhelp_write_curlbuf* body_buf)
 {
-  int content_length = 0;
+  size_t content_length = 0;
   struct phr_header headers[255];
   size_t nof_headers = 255;
   size_t msglen;
diff --git a/plugins/check_dns.c b/plugins/check_dns.c
index 82dc264..5e20214 100644
--- a/plugins/check_dns.c
+++ b/plugins/check_dns.c
@@ -122,7 +122,7 @@ main (int argc, char **argv)
   }
 
   /* scan stdout */
-  for(i = 0; i < chld_out.lines; i++) {
+  for(size_t i = 0; i < chld_out.lines; i++) {
     if (addresses == NULL)
       addresses = malloc(sizeof(*addresses)*10);
     else if (!(n_addresses % 10))
@@ -197,7 +197,7 @@ main (int argc, char **argv)
   }
 
   /* scan stderr */
-  for(i = 0; i < chld_err.lines; i++) {
+  for(size_t i = 0; i < chld_err.lines; i++) {
     if (verbose)
       puts(chld_err.line[i]);
 
@@ -241,7 +241,7 @@ main (int argc, char **argv)
     unsigned long expect_match = (1 << expected_address_cnt) - 1;
     unsigned long addr_match = (1 << n_addresses) - 1;
 
-    for (i=0; i<expected_address_cnt; i++) {
+    for (int i=0; i<expected_address_cnt; i++) {
       int j;
       /* check if we get a match on 'raw' ip or cidr */
       for (j=0; j<n_addresses; j++) {
diff --git a/plugins/check_procs.c b/plugins/check_procs.c
index 1637e3e..6e3feae 100644
--- a/plugins/check_procs.c
+++ b/plugins/check_procs.c
@@ -153,7 +153,7 @@ main (int argc, char **argv)
        int expected_cols = PS_COLS - 1;
        int warn = 0; /* number of processes in warn state */
        int crit = 0; /* number of processes in crit state */
-       int i = 0, j = 0;
+       int i = 0;
        int result = STATE_UNKNOWN;
        int ret = 0;
        output chld_out, chld_err;
@@ -207,7 +207,7 @@ main (int argc, char **argv)
        }
 
        /* flush first line: j starts at 1 */
-       for (j = 1; j < chld_out.lines; j++) {
+       for (size_t j = 1; j < chld_out.lines; j++) {
                input_line = chld_out.line[j];
 
                if (verbose >= 3)
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c
index 405ede3..01bee23 100644
--- a/plugins/check_snmp.c
+++ b/plugins/check_snmp.c
@@ -131,7 +131,7 @@ size_t nlabels = 0;
 size_t labels_size = OID_COUNT_STEP;
 size_t nunits = 0;
 size_t unitv_size = OID_COUNT_STEP;
-int numoids = 0;
+size_t numoids = 0;
 int numauthpriv = 0;
 int numcontext = 0;
 int verbose = 0;
@@ -187,7 +187,8 @@ static char *fix_snmp_range(char *th)
 int
 main (int argc, char **argv)
 {
-       int i, len, line, total_oids;
+       int len, total_oids;
+       size_t line;
        unsigned int bk_count = 0, dq_count = 0;
        int iresult = STATE_UNKNOWN;
        int result = STATE_UNKNOWN;
@@ -253,7 +254,9 @@ main (int argc, char **argv)
        if(calculate_rate) {
                if (!strcmp(label, "SNMP"))
                        label = strdup("SNMP RATE");
-               i=0;
+
+               size_t i = 0;
+
                previous_state = np_state_read();
                if(previous_state!=NULL) {
                        /* Split colon separated values */
@@ -273,7 +276,7 @@ main (int argc, char **argv)
        /* Populate the thresholds */
        th_warn=warning_thresholds;
        th_crit=critical_thresholds;
-       for (i=0; i<numoids; i++) {
+       for (size_t i = 0; i < numoids; i++) {
                char *w = th_warn ? strndup(th_warn, strcspn(th_warn, ",")) : 
NULL;
                char *c = th_crit ? strndup(th_crit, strcspn(th_crit, ",")) : 
NULL;
                /* translate "2:1" to "@1:2" for backwards compatibility */
@@ -333,11 +336,11 @@ main (int argc, char **argv)
        }
 
 
-       for (i = 0; i < numcontext; i++) {
+       for (int i = 0; i < numcontext; i++) {
                command_line[index++] = contextargs[i];
        }
 
-       for (i = 0; i < numauthpriv; i++) {
+       for (int i = 0; i < numauthpriv; i++) {
                command_line[index++] = authpriv[i];
        }
 
@@ -348,7 +351,7 @@ main (int argc, char **argv)
         server_address,
         port);
 
-       for (i = 0; i < numoids; i++) {
+       for (size_t i = 0; i < numoids; i++) {
                command_line[index++] = oids[i];
                xasprintf(&cl_hidden_auth, "%s %s", cl_hidden_auth, oids[i]);
        }
@@ -382,7 +385,7 @@ main (int argc, char **argv)
        if (external_error) {
                if (chld_err.lines > 0) {
                        printf (_("External command error: %s\n"), 
chld_err.line[0]);
-                       for (i = 1; i < chld_err.lines; i++) {
+                       for (size_t i = 1; i < chld_err.lines; i++) {
                                printf ("%s\n", chld_err.line[i]);
                        }
                } else {
@@ -392,12 +395,14 @@ main (int argc, char **argv)
        }
 
        if (verbose) {
-               for (i = 0; i < chld_out.lines; i++) {
+               for (size_t i = 0; i < chld_out.lines; i++) {
                        printf ("%s\n", chld_out.line[i]);
                }
        }
 
-       for (line=0, i=0; line < chld_out.lines && i < numoids ; line++, i++) {
+       line = 0;
+       total_oids = 0;
+       for (size_t i = 0; line < chld_out.lines && i < numoids ; line++, i++, 
total_oids++) {
                if(calculate_rate)
                        conv = "%.10g";
                else
@@ -634,7 +639,6 @@ main (int argc, char **argv)
                        strncat(perfstr, " ", 
sizeof(perfstr)-strlen(perfstr)-1);
                }
        }
-       total_oids=i;
 
        /* Save state data, as all data collected now */
        if(calculate_rate) {
@@ -644,7 +648,7 @@ main (int argc, char **argv)
                        die(STATE_UNKNOWN, _("Cannot malloc"));
 
                current_length=0;
-               for(i=0; i<total_oids; i++) {
+               for(int i = 0; i < total_oids; i++) {
                        xasprintf(&temp_string,"%.0f",response_value[i]);
                        if(temp_string==NULL)
                                die(STATE_UNKNOWN,_("Cannot asprintf()"));
@@ -687,7 +691,8 @@ process_arguments (int argc, char **argv)
 {
        char *ptr;
        int c = 1;
-       int j = 0, jj = 0, ii = 0;
+       int ii = 0;
+       size_t j = 0, jj = 0;
 
        int option = 0;
        static struct option longopts[] = {
diff --git a/plugins/check_tcp.c b/plugins/check_tcp.c
index a1a14b4..c103612 100644
--- a/plugins/check_tcp.c
+++ b/plugins/check_tcp.c
@@ -102,7 +102,6 @@ int
 main (int argc, char **argv)
 {
        int result = STATE_UNKNOWN;
-       int i;
        char *status = NULL;
        struct timeval tv;
        struct timeval timeout;
@@ -124,7 +123,7 @@ main (int argc, char **argv)
        len = strlen(progname);
        if(len > 6 && !memcmp(progname, "check_", 6)) {
                SERVICE = strdup(progname + 6);
-               for(i = 0; i < len - 6; i++)
+               for(size_t i = 0; i < len - 6; i++)
                        SERVICE[i] = toupper(SERVICE[i]);
        }
 
@@ -275,7 +274,7 @@ main (int argc, char **argv)
                        printf("Quit string: %s\n", server_quit);
                }
                printf("server_expect_count: %d\n", (int)server_expect_count);
-               for(i = 0; i < server_expect_count; i++)
+               for(size_t i = 0; i < server_expect_count; i++)
                        printf("\t%d: %s\n", i, server_expect[i]);
        }
 
@@ -284,10 +283,11 @@ main (int argc, char **argv)
        if (server_expect_count) {
 
                /* watch for the expect string */
-               while ((i = my_recv(buffer, sizeof(buffer))) > 0) {
-                       status = realloc(status, len + i + 1);
-                       memcpy(&status[len], buffer, i);
-                       len += i;
+               size_t received = 0;
+               while ((received = my_recv(buffer, sizeof(buffer))) > 0) {
+                       status = realloc(status, len + received + 1);
+                       memcpy(&status[len], buffer, received);
+                       len += received;
                        status[len] = '\0';
 
                        /* stop reading if user-forced */
diff --git a/plugins/check_ups.c b/plugins/check_ups.c
index d1ded62..bb91c4a 100644
--- a/plugins/check_ups.c
+++ b/plugins/check_ups.c
@@ -402,7 +402,8 @@ get_ups_variable (const char *varname, char *buf)
 
        /* create the command string to send to the UPS daemon */
        /* Add LOGOUT to avoid read failure logs */
-       if (snprintf (send_buffer, sizeof(send_buffer), "GET VAR %s 
%s\nLOGOUT\n", ups_name, varname) >= sizeof(send_buffer)) {
+       int res = snprintf (send_buffer, sizeof(send_buffer), "GET VAR %s 
%s\nLOGOUT\n", ups_name, varname);
+       if ( (res > 0) && ((size_t)res >= sizeof(send_buffer))) {
                printf("%s\n", _("UPS name to long for buffer"));
                return ERROR;
        }
diff --git a/plugins/negate.c b/plugins/negate.c
index 79cca7e..745c12a 100644
--- a/plugins/negate.c
+++ b/plugins/negate.c
@@ -63,7 +63,6 @@ main (int argc, char **argv)
        char *sub;
        char **command_line;
        output chld_out, chld_err;
-       int i;
 
        setlocale (LC_ALL, "");
        bindtextdomain (PACKAGE, LOCALEDIR);
@@ -86,7 +85,7 @@ main (int argc, char **argv)
                result = cmd_run_array (command_line, &chld_out, &chld_err, 0);
        }
        if (chld_err.lines > 0) {
-               for (i = 0; i < chld_err.lines; i++) {
+               for (size_t i = 0; i < chld_err.lines; i++) {
                        fprintf (stderr, "%s\n", chld_err.line[i]);
                }
        }
@@ -95,7 +94,7 @@ main (int argc, char **argv)
        if (chld_out.lines == 0)
                die (max_state_alt (result, STATE_UNKNOWN), _("No data returned 
from command\n"));
 
-       for (i = 0; i < chld_out.lines; i++) {
+       for (size_t i = 0; i < chld_out.lines; i++) {
                if (subst_text && result >= 0 && result <= 4 && result != 
state[result])  {
                        /* Loop over each match found */
                        while ((sub = strstr (chld_out.line[i], state_text 
(result)))) {
diff --git a/plugins/runcmd.c b/plugins/runcmd.c
index 4f3e349..32fd6b9 100644
--- a/plugins/runcmd.c
+++ b/plugins/runcmd.c
@@ -240,13 +240,12 @@ np_runcmd_close(int fd)
 void
 runcmd_timeout_alarm_handler (int signo)
 {
-       size_t i;
 
        if (signo == SIGALRM)
                puts(_("CRITICAL - Plugin timed out while executing system 
call"));
 
   long maxfd = mp_open_max();
-       if(np_pids) for(i = 0; i < maxfd; i++) {
+       if(np_pids) for(long int i = 0; i < maxfd; i++) {
                if(np_pids[i] != 0) kill(np_pids[i], SIGKILL);
        }
 
diff --git a/plugins/utils.c b/plugins/utils.c
index 7e14b6e..e871c5f 100644
--- a/plugins/utils.c
+++ b/plugins/utils.c
@@ -230,13 +230,21 @@ bool is_intnonneg (char *number) {
  */
 bool is_int64(char *number, int64_t *target) {
        errno = 0;
-       uint64_t tmp = strtoll(number, NULL, 10);
+       char *endptr = { 0 };
+
+       int64_t tmp = strtoll(number, &endptr, 10);
        if (errno != 0) {
                return false;
        }
+
+       if (*endptr == '\0') {
+               return 0;
+       }
+
        if (tmp < INT64_MIN || tmp > INT64_MAX) {
                return false;
        }
+
        if (target != NULL) {
                *target = tmp;
        }

Reply via email to