realloc(ptr, 0) does not free; from seebs@taniemarie.solon.com;
authorderaadt <deraadt@openbsd.org>
Mon, 29 Jan 1996 02:00:21 +0000 (02:00 +0000)
committerderaadt <deraadt@openbsd.org>
Mon, 29 Jan 1996 02:00:21 +0000 (02:00 +0000)
netbsd pr#1806

lib/libc/stdlib/malloc.c

index 3c57fad..4498a9f 100644 (file)
@@ -1,3 +1,5 @@
+/*     $NetBSD: malloc.c,v 1.6 1996/01/17 02:45:25 jtc Exp $   */
+
 /*
  * Copyright (c) 1983 Regents of the University of California.
  * All rights reserved.
  */
 
 #if defined(LIBC_SCCS) && !defined(lint)
-/*static char *sccsid = "from: @(#)malloc.c    5.11 (Berkeley) 2/23/91";*/
-static char *rcsid = "$Id: malloc.c,v 1.1.1.1 1995/10/18 08:42:18 deraadt Exp $";
+#if 0
+static char *sccsid = "from: @(#)malloc.c      5.11 (Berkeley) 2/23/91";
+#else
+static char *rcsid = "$NetBSD: malloc.c,v 1.6 1996/01/17 02:45:25 jtc Exp $";
+#endif
 #endif /* LIBC_SCCS and not lint */
 
 /*
@@ -310,6 +315,10 @@ realloc(cp, nbytes)
 
        if (cp == NULL)
                return (malloc(nbytes));
+       if (nbytes == 0) {
+               free (cp);
+               return NULL;
+       }
        op = (union overhead *)((caddr_t)cp - sizeof (union overhead));
        if (op->ov_magic == MAGIC) {
                was_alloced++;