Loading fs/binfmt_som.c +16 −2 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ #include <linux/personality.h> #include <linux/init.h> #include <asm/a.out.h> #include <asm/uaccess.h> #include <asm/pgtable.h> Loading Loading @@ -194,6 +195,7 @@ load_som_binary(struct linux_binprm * bprm, struct pt_regs * regs) unsigned long som_entry; struct som_hdr *som_ex; struct som_exec_auxhdr *hpuxhdr; struct files_struct *files; /* Get the exec-header */ som_ex = (struct som_hdr *) bprm->buf; Loading @@ -208,15 +210,27 @@ load_som_binary(struct linux_binprm * bprm, struct pt_regs * regs) size = som_ex->aux_header_size; if (size > SOM_PAGESIZE) goto out; hpuxhdr = (struct som_exec_auxhdr *) kmalloc(size, GFP_KERNEL); hpuxhdr = kmalloc(size, GFP_KERNEL); if (!hpuxhdr) goto out; retval = kernel_read(bprm->file, som_ex->aux_header_location, (char *) hpuxhdr, size); if (retval != size) { if (retval >= 0) retval = -EIO; goto out_free; } files = current->files; /* Refcounted so ok */ retval = unshare_files(); if (retval < 0) goto out_free; #error "Fix security hole before enabling me" if (files == current->files) { put_files_struct(files); files = NULL; } retval = get_unused_fd(); if (retval < 0) goto out_free; Loading Loading
fs/binfmt_som.c +16 −2 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ #include <linux/personality.h> #include <linux/init.h> #include <asm/a.out.h> #include <asm/uaccess.h> #include <asm/pgtable.h> Loading Loading @@ -194,6 +195,7 @@ load_som_binary(struct linux_binprm * bprm, struct pt_regs * regs) unsigned long som_entry; struct som_hdr *som_ex; struct som_exec_auxhdr *hpuxhdr; struct files_struct *files; /* Get the exec-header */ som_ex = (struct som_hdr *) bprm->buf; Loading @@ -208,15 +210,27 @@ load_som_binary(struct linux_binprm * bprm, struct pt_regs * regs) size = som_ex->aux_header_size; if (size > SOM_PAGESIZE) goto out; hpuxhdr = (struct som_exec_auxhdr *) kmalloc(size, GFP_KERNEL); hpuxhdr = kmalloc(size, GFP_KERNEL); if (!hpuxhdr) goto out; retval = kernel_read(bprm->file, som_ex->aux_header_location, (char *) hpuxhdr, size); if (retval != size) { if (retval >= 0) retval = -EIO; goto out_free; } files = current->files; /* Refcounted so ok */ retval = unshare_files(); if (retval < 0) goto out_free; #error "Fix security hole before enabling me" if (files == current->files) { put_files_struct(files); files = NULL; } retval = get_unused_fd(); if (retval < 0) goto out_free; Loading