Browse Source

Don't override environ if realloc() fails. Pointed out by

Dave Bodenstab <imdave@mcs.net>
OPENBSD_2_3
millert 27 years ago
parent
commit
24241ad741
1 changed files with 4 additions and 3 deletions
  1. +4
    -3
      src/lib/libc/stdlib/setenv.c

+ 4
- 3
src/lib/libc/stdlib/setenv.c View File

@ -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 */


Loading…
Cancel
Save