Public bug reported:

Binary package hint: nagios-plugins-basic

Command execution returns error with double value:
# /usr/lib/nagios/plugins/check_smtp -H  localhost -w 0.2
check_smtp: Warning time must be a positive integer
Usage:check_smtp -H host [-p port] [-e expect] [-C command] [-f from addr][-A 
authtype -U authuser -P authpass] [-w warn] [-c crit] [-t timeout]
[-S] [-D days] [-n] [-v] [-4|-6]

But docu ( /usr/lib/nagios/plugins/check_smtp -h) says:
 -w, --warning=DOUBLE
    Response time to result in warning status (seconds)
 -c, --critical=DOUBLE
    Response time to result in critical status (seconds)

I think, that the integer check is done on error, since all other
commands with -w / -c option take double arguments and sub second
response time checks are really useful.

-----------------------------------------
Current package:

Status: install ok installed
Priority: extra
Section: net
Installed-Size: 1252
Maintainer: Ubuntu Core Developers <ubuntu-devel-disc...@lists.ubuntu.com>
Architecture: i386
Source: nagios-plugins
Version: 1.4.11-1ubuntu5


----------------------------------------
Patch vs nagios-plugins-1.4.12 source (untested):

--- check_smtp.orig     2009-01-19 10:57:05.000000000 +0100
+++ check_smtp.c        2009-01-19 11:34:04.000000000 +0100
@@ -103,9 +103,9 @@
 char *authtype = NULL;
 char *authuser = NULL;
 char *authpass = NULL;
-int warning_time = 0;
+double warning_time = 0;
 int check_warning_time = FALSE;
-int critical_time = 0;
+double critical_time = 0;
 int check_critical_time = FALSE;
 int verbose = 0;
 int use_ssl = FALSE;
@@ -432,9 +432,9 @@
        elapsed_time = (double)microsec / 1.0e6;
 
        if (result == STATE_OK) {
-               if (check_critical_time && elapsed_time > (double) 
critical_time)
+               if (check_critical_time && elapsed_time > critical_time)
                        result = STATE_CRITICAL;
-               else if (check_warning_time && elapsed_time > (double) 
warning_time)
+               else if (check_warning_time && elapsed_time > warning_time)
                        result = STATE_WARNING;
        }
 
@@ -565,21 +565,19 @@
                        nresponses++;
                        break;
                case 'c':                                                      
/* critical time threshold */
-                       if (is_intnonneg (optarg)) {
-                               critical_time = atoi (optarg);
-                               check_critical_time = TRUE;
-                       }
+                       if (!is_nonnegative (optarg))
+                               usage4 (_("Critical time must be a positive"));
                        else {
-                               usage4 (_("Critical time must be a positive 
integer"));
+                               critical_time = strtod (optarg, NULL);
+                               check_critical_time = TRUE;
                        }
                        break;
                case 'w':                                                      
/* warning time threshold */
-                       if (is_intnonneg (optarg)) {
-                               warning_time = atoi (optarg);
-                               check_warning_time = TRUE;
-                       }
+                       if (!is_nonnegative (optarg))
+                               usage4 (_("Warning time must be a positive"));
                        else {
-                               usage4 (_("Warning time must be a positive 
integer"));
+                               warning_time = strtod (optarg, NULL);
+                               check_warning_time = TRUE;
                        }
                        break;
                case 'v':                                                      
/* verbose */


Cross comparison with other files (e.g. check_http.c) showed that there might 
be more of these  issues, e.g. wrong message outputs/conversions

    case 'w': /* warning time threshold */
      if (!is_nonnegative (optarg))
        usage2 (_("Warning threshold must be integer"), optarg);
      else {
        warning_time = strtod (optarg, NULL);
        check_warning_time = TRUE;
      }
      break;

** Affects: nagios-plugins (Ubuntu)
     Importance: Undecided
         Status: New

-- 
nagios check_smtp expects integer instead of double
https://bugs.launchpad.net/bugs/318703
You received this bug notification because you are a member of Ubuntu
Server Team, which is subscribed to nagios-plugins in ubuntu.

-- 
Ubuntu-server-bugs mailing list
Ubuntu-server-bugs@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs

Reply via email to