summaryrefslogtreecommitdiffstats
path: root/plugins/check_radius.c
diff options
context:
space:
mode:
authorThomas Guyot-Sionnest <dermoth@aei.ca>2010-04-14 07:38:52 (GMT)
committerThomas Guyot-Sionnest <dermoth@aei.ca>2010-04-14 07:38:52 (GMT)
commita179737771ece982e1840d480b10cb6ed1792619 (patch)
tree62240812a399c61fe301240ac5ca165abc2bf393 /plugins/check_radius.c
parente7cefa7be491050b6dc895f6cfab82c5ead340a7 (diff)
downloadmonitoring-plugins-a179737771ece982e1840d480b10cb6ed1792619.tar.gz
Fix check_radius returning OK on unexpected results
REJECT_RC is defined on some radiusclient versions and differenciates between auth errors and bad responses. This patch will affect only the behaviour of those clients exporting REJECT_RC. In addition, unexpected return codes are now handled properly and return UNKNOWN.
Diffstat (limited to 'plugins/check_radius.c')
-rw-r--r--plugins/check_radius.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/plugins/check_radius.c b/plugins/check_radius.c
index 3717625..b2f5732 100644
--- a/plugins/check_radius.c
+++ b/plugins/check_radius.c
@@ -63,6 +63,13 @@ void print_usage (void);
63#define my_rc_avpair_add(a,b,c,d) rc_avpair_add(a, b, c, d) 63#define my_rc_avpair_add(a,b,c,d) rc_avpair_add(a, b, c, d)
64#define my_rc_read_dictionary(a) rc_read_dictionary(a) 64#define my_rc_read_dictionary(a) rc_read_dictionary(a)
65#endif 65#endif
66
67/* REJECT_RC is only defined in some version of radiusclient. It has
68 * been reported from radiusclient-ng 0.5.6 on FreeBSD 7.2-RELEASE */
69#ifndef REJECT_RC
70#define REJECT_RC BADRESP_RC
71#endif
72
66int my_rc_read_config(char *); 73int my_rc_read_config(char *);
67 74
68char *server = NULL; 75char *server = NULL;
@@ -195,13 +202,16 @@ main (int argc, char **argv)
195 die (STATE_CRITICAL, _("Timeout")); 202 die (STATE_CRITICAL, _("Timeout"));
196 if (result == ERROR_RC) 203 if (result == ERROR_RC)
197 die (STATE_CRITICAL, _("Auth Error")); 204 die (STATE_CRITICAL, _("Auth Error"));
198 if (result == BADRESP_RC) 205 if (result == REJECT_RC)
199 die (STATE_WARNING, _("Auth Failed")); 206 die (STATE_WARNING, _("Auth Failed"));
207 if (result == BADRESP_RC)
208 die (STATE_WARNING, _("Bad Response"));
200 if (expect && !strstr (msg, expect)) 209 if (expect && !strstr (msg, expect))
201 die (STATE_WARNING, "%s", msg); 210 die (STATE_WARNING, "%s", msg);
202 if (result == OK_RC) 211 if (result == OK_RC)
203 die (STATE_OK, _("Auth OK")); 212 die (STATE_OK, _("Auth OK"));
204 return (0); 213 (void)snprintf(msg, sizeof(msg), _("Unexpected result code %d"), result);
214 die (STATE_UNKNOWN, msg);
205} 215}
206 216
207 217