summaryrefslogtreecommitdiff
path: root/src/lib/libc/stdlib/calloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libc/stdlib/calloc.c')
-rw-r--r--src/lib/libc/stdlib/calloc.c29
1 files changed, 13 insertions, 16 deletions
diff --git a/src/lib/libc/stdlib/calloc.c b/src/lib/libc/stdlib/calloc.c
index 3353fab052..43a0d1632c 100644
--- a/src/lib/libc/stdlib/calloc.c
+++ b/src/lib/libc/stdlib/calloc.c
@@ -1,3 +1,4 @@
1/* $OpenBSD: calloc.c,v 1.11 2006/04/02 18:22:14 otto Exp $ */
1/*- 2/*-
2 * Copyright (c) 1990 The Regents of the University of California. 3 * Copyright (c) 1990 The Regents of the University of California.
3 * All rights reserved. 4 * All rights reserved.
@@ -10,11 +11,7 @@
10 * 2. Redistributions in binary form must reproduce the above copyright 11 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the 12 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution. 13 * documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software 14 * 3. Neither the name of the University nor the names of its contributors
14 * must display the following acknowledgement:
15 * This product includes software developed by the University of
16 * California, Berkeley and its contributors.
17 * 4. Neither the name of the University nor the names of its contributors
18 * may be used to endorse or promote products derived from this software 15 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission. 16 * without specific prior written permission.
20 * 17 *
@@ -31,23 +28,23 @@
31 * SUCH DAMAGE. 28 * SUCH DAMAGE.
32 */ 29 */
33 30
34#if defined(LIBC_SCCS) && !defined(lint)
35/*static char *sccsid = "from: @(#)calloc.c 5.6 (Berkeley) 2/23/91";*/
36static char *rcsid = "$Id: calloc.c,v 1.1.1.1 1995/10/18 08:42:17 deraadt Exp $";
37#endif /* LIBC_SCCS and not lint */
38
39#include <stdlib.h> 31#include <stdlib.h>
40#include <string.h> 32#include <string.h>
33#include <limits.h>
34#include <errno.h>
41 35
42void * 36void *
43calloc(num, size) 37calloc(size_t num, size_t size)
44 size_t num;
45 register size_t size;
46{ 38{
47 register void *p; 39 void *p;
48 40
41 if (num && SIZE_MAX / num < size) {
42 errno = ENOMEM;
43 return NULL;
44 }
49 size *= num; 45 size *= num;
50 if (p = malloc(size)) 46 p = malloc(size);
51 memset(p, '\0', size); 47 if (p)
48 memset(p, 0, size);
52 return(p); 49 return(p);
53} 50}