diff options
Diffstat (limited to 'sys-kernel/alpha-sources/files/alpha-sources.binfmt_elf.patch')
-rw-r--r-- | sys-kernel/alpha-sources/files/alpha-sources.binfmt_elf.patch | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/sys-kernel/alpha-sources/files/alpha-sources.binfmt_elf.patch b/sys-kernel/alpha-sources/files/alpha-sources.binfmt_elf.patch deleted file mode 100644 index f0b319bca0fb..000000000000 --- a/sys-kernel/alpha-sources/files/alpha-sources.binfmt_elf.patch +++ /dev/null @@ -1,96 +0,0 @@ -diff -ur linux-2.4.21/fs/binfmt_elf.c linux-2.4.21.plasmaroo/fs/binfmt_elf.c ---- linux-2.4.21/fs/binfmt_elf.c 2004-08-14 18:15:42.000000000 +0100 -+++ linux-2.4.21.plasmaroo/fs/binfmt_elf.c 2004-11-19 20:48:27.314422552 +0000 -@@ -299,9 +299,12 @@ - goto out; - - retval = kernel_read(interpreter,interp_elf_ex->e_phoff,(char *)elf_phdata,size); -- error = retval; -- if (retval < 0) -+ error = -EIO; -+ if (retval != size) { -+ if (retval < 0) -+ error = retval; - goto out_close; -+ } - - eppnt = elf_phdata; - for (i=0; i<interp_elf_ex->e_phnum; i++, eppnt++) { -@@ -473,8 +476,11 @@ - goto out; - - retval = kernel_read(bprm->file, elf_ex.e_phoff, (char *) elf_phdata, size); -- if (retval < 0) -+ if (retval != size) { -+ if (retval >= 0) -+ retval = -EIO; - goto out_free_ph; -+ } - - retval = get_unused_fd(); - if (retval < 0) -@@ -499,7 +505,8 @@ - */ - - retval = -ENOMEM; -- if (elf_ppnt->p_filesz > PATH_MAX) -+ if (elf_ppnt->p_filesz > PATH_MAX || -+ elf_ppnt->p_filesz == 0) - goto out_free_file; - elf_interpreter = (char *) kmalloc(elf_ppnt->p_filesz, - GFP_KERNEL); -@@ -509,8 +516,16 @@ - retval = kernel_read(bprm->file, elf_ppnt->p_offset, - elf_interpreter, - elf_ppnt->p_filesz); -- if (retval < 0) -+ if (retval != elf_ppnt->p_filesz) { -+ if (retval >= 0) -+ retval = -EIO; -+ goto out_free_interp; -+ } -+ /* make sure path is NULL terminated */ -+ retval = -EINVAL; -+ if (elf_interpreter[elf_ppnt->p_filesz - 1] != '\0') - goto out_free_interp; -+ - /* If the program interpreter is one of these two, - * then assume an iBCS2 image. Otherwise assume - * a native linux image. -@@ -529,8 +544,11 @@ - if (IS_ERR(interpreter)) - goto out_free_interp; - retval = kernel_read(interpreter, 0, bprm->buf, BINPRM_BUF_SIZE); -- if (retval < 0) -+ if (retval != BINPRM_BUF_SIZE) { -+ if (retval >= 0) -+ retval = -EIO; - goto out_free_dentry; -+ } - - /* Get the exec headers */ - interp_ex = *((struct exec *) bprm->buf); -@@ -967,7 +982,10 @@ - #endif - - if (BAD_ADDR(error)) -- continue; -+ { -+ send_sig(SIGKILL, current, 0); -+ goto out_free_dentry; -+ } - - /* PaX: mirror at a randomized base */ - down_write(¤t->mm->mmap_sem); -@@ -1008,7 +1026,10 @@ - { - error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt, elf_prot, elf_flags); - if (BAD_ADDR(error)) -- continue; -+ { -+ send_sig(SIGKILL, current, 0); -+ goto out_free_dentry; -+ } - } - - if (!load_addr_set) { |