prevent shmget from allocating objects that overflow ptrdiff_t
[musl] / src / ipc / shmget.c
index 61fb11d..b44f9d6 100644 (file)
@@ -1,9 +1,11 @@
 #include <sys/shm.h>
 #include <sys/shm.h>
+#include <stdint.h>
 #include "syscall.h"
 #include "ipc.h"
 
 int shmget(key_t key, size_t size, int flag)
 {
 #include "syscall.h"
 #include "ipc.h"
 
 int shmget(key_t key, size_t size, int flag)
 {
+       if (size > PTRDIFF_MAX) size = SIZE_MAX;
 #ifdef SYS_shmget
        return syscall(SYS_shmget, key, size, flag);
 #else
 #ifdef SYS_shmget
        return syscall(SYS_shmget, key, size, flag);
 #else