From: Manfred Spraul Date: Fri, 6 Jun 2014 21:37:41 +0000 (-0700) Subject: ipc/shm.c: check for integer overflow during shmget. X-Git-Tag: v3.16-rc1~82^2~4^2~56 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1376327ce1f790070ec7128b285e2d8965e760a5;p=platform%2Fkernel%2Flinux-exynos.git ipc/shm.c: check for integer overflow during shmget. SHMMAX is the upper limit for the size of a shared memory segment, counted in bytes. The actual allocation is that size, rounded up to the next full page. Add a check that prevents the creation of segments where the rounded up size causes an integer overflow. Signed-off-by: Manfred Spraul Acked-by: Davidlohr Bueso Acked-by: KOSAKI Motohiro Acked-by: Michael Kerrisk Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/ipc/shm.c b/ipc/shm.c index 9e51bf2..89fc354 100644 --- a/ipc/shm.c +++ b/ipc/shm.c @@ -493,6 +493,9 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params) if (size < SHMMIN || size > ns->shm_ctlmax) return -EINVAL; + if (numpages << PAGE_SHIFT < size) + return -ENOSPC; + if (ns->shm_tot + numpages < ns->shm_tot || ns->shm_tot + numpages > ns->shm_ctlall) return -ENOSPC;