about summary refs log tree commit diff
path: root/src/mman/mremap.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mman/mremap.c')
-rw-r--r--src/mman/mremap.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/mman/mremap.c b/src/mman/mremap.c
index 596c45fb..1096ace1 100644
--- a/src/mman/mremap.c
+++ b/src/mman/mremap.c
@@ -1,5 +1,7 @@
 #include <unistd.h>
 #include <sys/mman.h>
+#include <errno.h>
+#include <stdint.h>
 #include <stdarg.h>
 #include "syscall.h"
 #include "libc.h"
@@ -8,7 +10,12 @@ void *__mremap(void *old_addr, size_t old_len, size_t new_len, int flags, ...)
 {
 	va_list ap;
 	void *new_addr;
-	
+
+	if (new_len >= PTRDIFF_MAX) {
+		errno = ENOMEM;
+		return MAP_FAILED;
+	}
+
 	va_start(ap, flags);
 	new_addr = va_arg(ap, void *);
 	va_end(ap);