mirror of
https://github.com/monitoring-plugins/monitoring-plugins.git
synced 2026-05-28 04:35:40 -04:00
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
This commit is contained in:
parent
f7c1eca1c4
commit
3c81964713
2 changed files with 18 additions and 9 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue