nagios check_smtp expects integer instead of double
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Nagios Plugins |
In Progress
|
Undecided
|
Unassigned | ||
nagios-plugins (Ubuntu) |
Fix Released
|
Low
|
Unassigned |
Bug Description
Binary package hint: nagios-
Command execution returns error with double value:
# /usr/lib/
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/
-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 <email address hidden>
Architecture: i386
Source: nagios-plugins
Version: 1.4.11-1ubuntu5
-------
Patch vs nagios-
--- 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 @@
if (result == STATE_OK) {
- if (check_
+ if (check_
- else if (check_warning_time && elapsed_time > (double) warning_time)
+ else if (check_warning_time && elapsed_time > warning_time)
}
@@ -565,21 +565,19 @@
- if (is_intnonneg (optarg)) {
- critical_time = atoi (optarg);
- check_critical_time = TRUE;
- }
+ if (!is_nonnegative (optarg))
+ usage4 (_("Critical time must be a positive"));
- usage4 (_("Critical time must be a positive integer"));
+ critical_time = strtod (optarg, NULL);
+ check_critical_time = TRUE;
- if (is_intnonneg (optarg)) {
- warning_time = atoi (optarg);
- check_warning_time = TRUE;
- }
+ if (!is_nonnegative (optarg))
+ usage4 (_("Warning time must be a positive"));
- usage4 (_("Warning time must be a positive integer"));
+ warning_time = strtod (optarg, NULL);
+ check_warning_time = TRUE;
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 {
}
break;
Changed in nagios-plugins: | |
importance: | Undecided → Low |
Changed in nagios-plugins (Ubuntu): | |
status: | Confirmed → Triaged |
tags: | added: patch-forwarded-upstream |
I can confirm the problem described; how the help asks for a double but the actual command complains unless it gets an integer. I haven't looked at the root cause.
This goes for for 1.4.11-1ubuntu5 (Hardy) as well as for 1.4.11-2ubuntu2.1 (Intrepid)