From 79f3805fac3ca734a92cc1367cf5c612d101c88d Mon Sep 17 00:00:00 2001 From: Jakob Schlyter Date: Mon, 2 Aug 1999 20:25:48 +0000 Subject: Fix realloc bug. --- usr.sbin/mailwrapper/mailwrapper.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'usr.sbin/mailwrapper/mailwrapper.c') diff --git a/usr.sbin/mailwrapper/mailwrapper.c b/usr.sbin/mailwrapper/mailwrapper.c index 2b6002d314b..7e90ad435c1 100644 --- a/usr.sbin/mailwrapper/mailwrapper.c +++ b/usr.sbin/mailwrapper/mailwrapper.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mailwrapper.c,v 1.1 1999/08/02 19:50:08 jakob Exp $ */ +/* $OpenBSD: mailwrapper.c,v 1.2 1999/08/02 20:25:47 jakob Exp $ */ /* $NetBSD: mailwrapper.c,v 1.2 1999/02/20 22:10:07 thorpej Exp $ */ /* @@ -70,11 +70,20 @@ addarg(al, arg, copy) const char *arg; int copy; { + char **argv2; + if (al->argc == al->maxc) { al->maxc <<= 1; - if ((al->argv = realloc(al->argv, - al->maxc * sizeof(char *))) == NULL) - err(1, "mailwrapper"); + + if ((argv2 = realloc(al->argv, + al->maxc * sizeof(char *))) == NULL) { + if (al->argv) + free(al->argv); + al->argv = NULL; + err(1, "mailwrapper"); + } else { + al->argv = argv2; + } } if (copy) { if ((al->argv[al->argc++] = strdup(arg)) == NULL) -- cgit v1.2.3