aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Karl DeBisschop <kdebisschop@users.sourceforge.net> 2004-03-01 12:27:19 +0000
committerGravatar Karl DeBisschop <kdebisschop@users.sourceforge.net> 2004-03-01 12:27:19 +0000
commit3c81964713e4114d7f40f95e9373c24b596d1efd (patch)
tree4c735cf76d5b94e246d60afb79969476379d9919
parentf7c1eca1c45f77df548e426281569e0c7c0a6480 (diff)
downloadmonitoring-plugins-3c81964713e4114d7f40f95e9373c24b596d1efd.tar.gz
check_tcp was returning uninitialized string with user-defined refused outcome
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@833 f882894a-f735-0410-b71e-b25c423dba1c
-rw-r--r--plugins/check_tcp.c4
-rw-r--r--plugins/netutils.c23
2 files changed, 18 insertions, 9 deletions
diff --git a/plugins/check_tcp.c b/plugins/check_tcp.c
index 7bd48d1a..55ce8984 100644
--- a/plugins/check_tcp.c
+++ b/plugins/check_tcp.c
@@ -206,6 +206,7 @@ main (int argc, char **argv)
server_port = PORT;
server_send = SEND;
server_quit = QUIT;
+ status = strdup ("");
if (process_arguments (argc, argv) == ERROR)
usage (_("Could not parse arguments\n"));
@@ -259,7 +260,6 @@ main (int argc, char **argv)
buffer = malloc (MAXBUF);
memset (buffer, '\0', MAXBUF);
- status = strdup ("");
/* watch for the expect string */
while ((i = my_recv ()) > 0) {
buffer[i] = '\0';
@@ -271,7 +271,7 @@ main (int argc, char **argv)
}
/* return a CRITICAL status if we couldn't read any data */
- if (status == NULL)
+ if (strlen(status) == 0)
die (STATE_CRITICAL, _("No data received from host\n"));
strip (status);
diff --git a/plugins/netutils.c b/plugins/netutils.c
index 5017eb9e..1fa69a35 100644
--- a/plugins/netutils.c
+++ b/plugins/netutils.c
@@ -252,11 +252,7 @@ my_connect (const char *host_name, int port, int *sd, int proto)
if (result < 0) {
switch (errno) {
case ECONNREFUSED:
- switch (econn_refuse_state) {
- case STATE_OK:
- case STATE_WARNING:
- was_refused = TRUE;
- }
+ was_refused = TRUE;
break;
}
}
@@ -269,8 +265,21 @@ my_connect (const char *host_name, int port, int *sd, int proto)
if (result == 0)
return STATE_OK;
- else if (was_refused)
- return econn_refuse_state;
+ else if (was_refused) {
+ switch (econn_refuse_state) { /* a user-defined expected outcome */
+ case STATE_OK:
+ case STATE_WARNING: /* user wants WARN or OK on refusal */
+ return econn_refuse_state;
+ break;
+ case STATE_CRITICAL: /* user did not set econn_refuse_state */
+ printf ("%s\n", strerror(errno));
+ return econn_refuse_state;
+ break;
+ default: /* it's a logic error if we do not end up in STATE_(OK|WARNING|CRITICAL) */
+ return STATE_UNKNOWN;
+ break;
+ }
+ }
else {
printf ("%s\n", strerror(errno));
return STATE_CRITICAL;