summary refs log tree commit diff
path: root/xmalloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'xmalloc.c')
-rw-r--r--xmalloc.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/xmalloc.c b/xmalloc.c
index 1d0c581..d0697fa 100644
--- a/xmalloc.c
+++ b/xmalloc.c
@@ -23,6 +23,7 @@
 
 #include <err.h>
 #include <errno.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -35,6 +36,8 @@ xmalloc(size_t siz)
 {
 	void	*p;
 
+	if (siz == 0)
+		errx(1, "xmalloc: zero size");
 	if ((p = malloc(siz)) == NULL)
 		err(1, "malloc");
 
@@ -46,6 +49,10 @@ xcalloc(size_t no, size_t siz)
 {
 	void	*p;
 
+	if (siz == 0 || no == 0)
+		errx(1, "xcalloc: zero size");
+	if (SIZE_MAX / no < siz)
+		errx(1, "xcalloc: no * siz > SIZE_MAX");
 	if ((p = calloc(no, siz)) == NULL)
 		err(1, "calloc");