From c134205981203c7a6908f5ae1e3ca297bac83876 Mon Sep 17 00:00:00 2001 From: Matthias Eble Date: Sat, 14 Jul 2007 19:36:48 +0000 Subject: [PATCH] Fixed segfault in argument processing. Thanks to Christoph Schell (#1742066) git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1757 f882894a-f735-0410-b71e-b25c423dba1c --- THANKS.in | 1 + plugins/check_smtp.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/THANKS.in b/THANKS.in index abe1ce4..c788bac 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 5001b50..a7a0783 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 */ -- 2.30.2