diff options
author | Karl DeBisschop <kdebisschop@users.sourceforge.net> | 2004-03-01 12:27:19 +0000 |
---|---|---|
committer | Karl DeBisschop <kdebisschop@users.sourceforge.net> | 2004-03-01 12:27:19 +0000 |
commit | 3c81964713e4114d7f40f95e9373c24b596d1efd (patch) | |
tree | 4c735cf76d5b94e246d60afb79969476379d9919 | |
parent | f7c1eca1c45f77df548e426281569e0c7c0a6480 (diff) | |
download | monitoring-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.c | 4 | ||||
-rw-r--r-- | plugins/netutils.c | 23 |
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; |