aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--THANKS.in1
-rw-r--r--plugins/check_smtp.c12
2 files changed, 9 insertions, 4 deletions
diff --git a/THANKS.in b/THANKS.in
index abe1ce4a..c788bac0 100644
--- a/THANKS.in
+++ b/THANKS.in
@@ -221,3 +221,4 @@ Emil Michles
Ask Bjoern Hansen
Daniel Bimschas
Aurelien Bompard
+Christoph Schell
diff --git a/plugins/check_smtp.c b/plugins/check_smtp.c
index 5001b502..a7a07838 100644
--- a/plugins/check_smtp.c
+++ b/plugins/check_smtp.c
@@ -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 */