diff options
author | Todd C. Miller <millert@cvs.openbsd.org> | 1998-02-02 22:44:54 +0000 |
---|---|---|
committer | Todd C. Miller <millert@cvs.openbsd.org> | 1998-02-02 22:44:54 +0000 |
commit | e49e035b5c13a5cd6ed38623e9ac896b85ff1cec (patch) | |
tree | a35830a9f41dc79f2d0c2b847f2295dd5f4c30ce | |
parent | aff6cfa8f9ae6a079569cb88a0df995f1777781a (diff) |
Don't override environ if realloc() fails. Pointed out by
Dave Bodenstab <imdave@mcs.net>
-rw-r--r-- | lib/libc/stdlib/setenv.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/libc/stdlib/setenv.c b/lib/libc/stdlib/setenv.c index 8838eb87809..b6f261e61cf 100644 --- a/lib/libc/stdlib/setenv.c +++ b/lib/libc/stdlib/setenv.c @@ -32,7 +32,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char *rcsid = "$OpenBSD: setenv.c,v 1.2 1996/08/19 08:33:48 tholo Exp $"; +static char *rcsid = "$OpenBSD: setenv.c,v 1.3 1998/02/02 22:44:53 millert Exp $"; #endif /* LIBC_SCCS and not lint */ #include <stdlib.h> @@ -71,10 +71,11 @@ setenv(name, value, rewrite) for (P = environ, cnt = 0; *P; ++P, ++cnt); if (alloced) { /* just increase size */ - environ = (char **)realloc((char *)environ, + P = (char **)realloc((void *)environ, (size_t)(sizeof(char *) * (cnt + 2))); - if (!environ) + if (!P) return (-1); + environ = P; } else { /* get new space */ alloced = 1; /* copy old entries into it */ |