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.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/lib/libc/stdlib/calloc.c b/src/lib/libc/stdlib/calloc.c
index 3353fab052..7aabed235f 100644
--- a/src/lib/libc/stdlib/calloc.c
+++ b/src/lib/libc/stdlib/calloc.c
@@ -10,11 +10,7 @@
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the 11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution. 12 * documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software 13 * 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 14 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission. 15 * without specific prior written permission.
20 * 16 *
@@ -32,22 +28,26 @@
32 */ 28 */
33 29
34#if defined(LIBC_SCCS) && !defined(lint) 30#if defined(LIBC_SCCS) && !defined(lint)
35/*static char *sccsid = "from: @(#)calloc.c 5.6 (Berkeley) 2/23/91";*/ 31static char *rcsid = "$OpenBSD: calloc.c,v 1.9 2005/03/30 18:51:49 pat Exp $";
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 */ 32#endif /* LIBC_SCCS and not lint */
38 33
39#include <stdlib.h> 34#include <stdlib.h>
40#include <string.h> 35#include <string.h>
36#include <limits.h>
37#include <errno.h>
41 38
42void * 39void *
43calloc(num, size) 40calloc(size_t num, size_t size)
44 size_t num;
45 register size_t size;
46{ 41{
47 register void *p; 42 void *p;
48 43
44 if (num && size && SIZE_T_MAX / num < size) {
45 errno = ENOMEM;
46 return NULL;
47 }
49 size *= num; 48 size *= num;
50 if (p = malloc(size)) 49 p = malloc(size);
51 memset(p, '\0', size); 50 if (p)
51 memset(p, 0, size);
52 return(p); 52 return(p);
53} 53}