X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fcheck_smtp.c;h=a7a07838f9b10f5d08063467045b5f27f0aeaf25;hb=c134205981203c7a6908f5ae1e3ca297bac83876;hp=6987e1722d5a267bebec460e05cd47924a4b6d49;hpb=1db33136b0e4176848e202281b4a054a7ed71533;p=nagiosplug.git diff --git a/plugins/check_smtp.c b/plugins/check_smtp.c index 6987e17..a7a0783 100644 --- a/plugins/check_smtp.c +++ b/plugins/check_smtp.c @@ -169,7 +169,7 @@ main (int argc, char **argv) int result = STATE_UNKNOWN; char *cmd_str = NULL; char *helocmd = NULL; - char *error_msg = NULL; + char *error_msg = ""; struct timeval tv; setlocale (LC_ALL, ""); @@ -380,12 +380,12 @@ main (int argc, char **argv) do { if (authuser == NULL) { result = STATE_CRITICAL; - error_msg = _("no authuser specified, "); + asprintf(&error_msg, _("no authuser specified, ")); break; } if (authpass == NULL) { result = STATE_CRITICAL; - error_msg = _("no authpass specified, "); + asprintf(&error_msg, _("no authpass specified, ")); break; } @@ -395,7 +395,7 @@ main (int argc, char **argv) printf (_("sent %s\n"), "AUTH LOGIN"); if((ret = my_recv(buffer, MAXBUF - 1)) < 0){ - error_msg = _("recv() failed after AUTH LOGIN, \n"); + asprintf(&error_msg, _("recv() failed after AUTH LOGIN, ")); result = STATE_WARNING; break; } @@ -405,7 +405,7 @@ main (int argc, char **argv) if (strncmp (buffer, "334", 3) != 0) { result = STATE_CRITICAL; - error_msg = _("invalid response received after AUTH LOGIN, "); + asprintf(&error_msg, _("invalid response received after AUTH LOGIN, ")); break; } @@ -418,7 +418,7 @@ main (int argc, char **argv) if ((ret = my_recv(buffer, MAX_INPUT_BUFFER-1)) == -1) { result = STATE_CRITICAL; - error_msg = _("recv() failed after sending authuser, "); + asprintf(&error_msg, _("recv() failed after sending authuser, ")); break; } buffer[ret] = 0; @@ -427,7 +427,7 @@ main (int argc, char **argv) } if (strncmp (buffer, "334", 3) != 0) { result = STATE_CRITICAL; - error_msg = _("invalid response received after authuser, "); + asprintf(&error_msg, _("invalid response received after authuser, ")); break; } /* encode authpass with base64 */ @@ -439,7 +439,7 @@ main (int argc, char **argv) } if ((ret = my_recv(buffer, MAX_INPUT_BUFFER-1)) == -1) { result = STATE_CRITICAL; - error_msg = _("recv() failed after sending authpass, "); + asprintf(&error_msg, _("recv() failed after sending authpass, ")); break; } buffer[ret] = 0; @@ -448,14 +448,14 @@ main (int argc, char **argv) } if (strncmp (buffer, "235", 3) != 0) { result = STATE_CRITICAL; - error_msg = _("invalid response received after authpass, "); + asprintf(&error_msg, _("invalid response received after authpass, ")); break; } break; } while (0); } else { result = STATE_CRITICAL; - error_msg = _("only authtype LOGIN is supported, "); + asprintf(&error_msg, _("only authtype LOGIN is supported, ")); } } @@ -481,7 +481,7 @@ main (int argc, char **argv) printf (_("SMTP %s - %s%.3f sec. response time%s%s|%s\n"), state_text (result), - (error_msg == NULL ? "" : error_msg), + error_msg, elapsed_time, verbose?", ":"", verbose?buffer:"", fperfdata ("time", elapsed_time, "s", @@ -582,22 +582,26 @@ process_arguments (int argc, char **argv) break; case 'C': /* commands */ if (ncommands >= command_size) { - commands = realloc (commands, command_size+8); + command_size+=8; + commands = realloc (commands, sizeof(char *) * command_size); if (commands == NULL) die (STATE_UNKNOWN, _("Could not realloc() units [%d]\n"), ncommands); } - commands[ncommands] = optarg; + commands[ncommands] = (char *) malloc (sizeof(char) * 255); + strncpy (commands[ncommands], optarg, 255); ncommands++; break; case 'R': /* server responses */ if (nresponses >= response_size) { - responses = realloc (responses, response_size+8); + response_size += 8; + responses = realloc (responses, sizeof(char *) * response_size); if (responses == NULL) die (STATE_UNKNOWN, _("Could not realloc() units [%d]\n"), nresponses); } - responses[nresponses] = optarg; + responses[nresponses] = (char *) malloc (sizeof(char) * 255); + strncpy (responses[nresponses], optarg, 255); nresponses++; break; case 'c': /* critical time threshold */