]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - fs/exec.c
setup_arg_pages: diagnose excessive argument size
[net-next-2.6.git] / fs / exec.c
index 2d9455282744bce582e48e0ecec4f4a6d332a28c..1b63237fc6dced1062c392523fed094ce7dacc56 100644 (file)
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -594,6 +594,11 @@ int setup_arg_pages(struct linux_binprm *bprm,
 #else
        stack_top = arch_align_stack(stack_top);
        stack_top = PAGE_ALIGN(stack_top);
+
+       if (unlikely(stack_top < mmap_min_addr) ||
+           unlikely(vma->vm_end - vma->vm_start >= stack_top - mmap_min_addr))
+               return -ENOMEM;
+
        stack_shift = vma->vm_end - stack_top;
 
        bprm->p -= stack_shift;