summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/libc/stdlib/calloc.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/lib/libc/stdlib/calloc.c b/src/lib/libc/stdlib/calloc.c
index e79d71f93e..c53b22b431 100644
--- a/src/lib/libc/stdlib/calloc.c
+++ b/src/lib/libc/stdlib/calloc.c
@@ -32,11 +32,13 @@
32 */ 32 */
33 33
34#if defined(LIBC_SCCS) && !defined(lint) 34#if defined(LIBC_SCCS) && !defined(lint)
35static char *rcsid = "$OpenBSD: calloc.c,v 1.5 1999/11/10 20:12:31 millert Exp $"; 35static char *rcsid = "$OpenBSD: calloc.c,v 1.6 2002/07/30 00:11:07 deraadt Exp $";
36#endif /* LIBC_SCCS and not lint */ 36#endif /* LIBC_SCCS and not lint */
37 37
38#include <stdlib.h> 38#include <stdlib.h>
39#include <string.h> 39#include <string.h>
40#include <limits.h>
41#include <errno.h>
40 42
41void * 43void *
42calloc(num, size) 44calloc(num, size)
@@ -45,6 +47,10 @@ calloc(num, size)
45{ 47{
46 register void *p; 48 register void *p;
47 49
50 if (SIZE_T_MAX / num < size) {
51 errno = ENOMEM;
52 return NULL;
53 }
48 size *= num; 54 size *= num;
49 p = malloc(size); 55 p = malloc(size);
50 if (p) 56 if (p)