| tag | line | file | source code |
| bprm | 42 | fs/binfmt_coff.c | static int load_object (struct linux_binprm *bprm, |
| bprm | 112 | fs/binfmt_coff.c | load_object (struct linux_binprm * bprm, struct pt_regs *regs, int lib_ok) |
| bprm | 114 | fs/binfmt_coff.c | COFF_FILHDR *coff_hdr = (COFF_FILHDR *) bprm->buf; /* COFF Header */ |
| bprm | 132 | fs/binfmt_coff.c | printk ("binfmt_coff entry: %s\n", bprm->filename); |
| bprm | 190 | fs/binfmt_coff.c | if (!bprm->inode->i_op || |
| bprm | 191 | fs/binfmt_coff.c | !bprm->inode->i_op->default_file_ops->mmap) { |
| bprm | 218 | fs/binfmt_coff.c | status = read_exec (bprm->inode, /* INODE for file */ |
| bprm | 379 | fs/binfmt_coff.c | fd = open_inode (bprm->inode, O_RDONLY); |
| bprm | 440 | fs/binfmt_coff.c | flush_old_exec (bprm); |
| bprm | 449 | fs/binfmt_coff.c | bprm->p += change_ldt (0, bprm->page); |
| bprm | 450 | fs/binfmt_coff.c | bprm->p -= MAX_ARG_PAGES*PAGE_SIZE; |
| bprm | 451 | fs/binfmt_coff.c | bprm->p = (unsigned long) create_tables ((char *) bprm->p, |
| bprm | 452 | fs/binfmt_coff.c | bprm->argc, |
| bprm | 453 | fs/binfmt_coff.c | bprm->envc, |
| bprm | 464 | fs/binfmt_coff.c | current->euid = bprm->e_uid; |
| bprm | 466 | fs/binfmt_coff.c | current->egid = bprm->e_gid; |
| bprm | 467 | fs/binfmt_coff.c | current->executable = bprm->inode; /* Store inode for file */ |
| bprm | 468 | fs/binfmt_coff.c | ++bprm->inode->i_count; /* Count the open inode */ |
| bprm | 471 | fs/binfmt_coff.c | current->mm->start_stack = bprm->p; |
| bprm | 541 | fs/binfmt_coff.c | status = preload_library (bprm, sect_ptr, fp); |
| bprm | 725 | fs/binfmt_coff.c | load_coff_binary (struct linux_binprm *bprm, struct pt_regs *regs) |
| bprm | 727 | fs/binfmt_coff.c | return (load_object (bprm, regs, 1)); |
| bprm | 739 | fs/binfmt_coff.c | struct linux_binprm *bprm; /* Parameters for the load operation */ |
| bprm | 744 | fs/binfmt_coff.c | bprm = (struct linux_binprm *) kmalloc (sizeof (struct linux_binprm), |
| bprm | 746 | fs/binfmt_coff.c | if (0 == bprm) { |
| bprm | 757 | fs/binfmt_coff.c | memset (bprm, '\0', sizeof (struct linux_binprm)); |
| bprm | 760 | fs/binfmt_coff.c | bprm->inode = file->f_inode; /* The only item _really_ needed */ |
| bprm | 761 | fs/binfmt_coff.c | bprm->filename = ""; /* Make it a legal string */ |
| bprm | 766 | fs/binfmt_coff.c | status = read_exec (bprm->inode, /* INODE for file */ |
| bprm | 768 | fs/binfmt_coff.c | bprm->buf, /* Buffer for read */ |
| bprm | 769 | fs/binfmt_coff.c | sizeof (bprm->buf)); /* Size of the buffer */ |
| bprm | 774 | fs/binfmt_coff.c | status = load_object (bprm, ®s, 0); |
| bprm | 778 | fs/binfmt_coff.c | kfree (bprm); /* Release the buffer area */ |
| bprm | 254 | fs/binfmt_elf.c | int load_elf_binary(struct linux_binprm * bprm, struct pt_regs * regs) |
| bprm | 279 | fs/binfmt_elf.c | elf_ex = *((struct elfhdr *) bprm->buf); /* exec-header */ |
| bprm | 289 | fs/binfmt_elf.c | (!bprm->inode->i_op || !bprm->inode->i_op->default_file_ops || |
| bprm | 290 | fs/binfmt_elf.c | !bprm->inode->i_op->default_file_ops->mmap)){ |
| bprm | 301 | fs/binfmt_elf.c | retval = read_exec(bprm->inode, elf_ex.e_phoff, (char *) elf_phdata, |
| bprm | 314 | fs/binfmt_elf.c | elf_exec_fileno = open_inode(bprm->inode, O_RDONLY); |
| bprm | 340 | fs/binfmt_elf.c | retval = read_exec(bprm->inode,elf_ppnt->p_offset,elf_interpreter, |
| bprm | 348 | fs/binfmt_elf.c | retval = read_exec(interpreter_inode,0,bprm->buf,128); |
| bprm | 351 | fs/binfmt_elf.c | interp_ex = *((struct exec *) bprm->buf); /* exec-header */ |
| bprm | 352 | fs/binfmt_elf.c | interp_elf_ex = *((struct elfhdr *) bprm->buf); /* exec-header */ |
| bprm | 395 | fs/binfmt_elf.c | if (!bprm->sh_bang) { |
| bprm | 403 | fs/binfmt_elf.c | bprm->p = copy_strings(1,&passed_p,bprm->page,bprm->p,2); |
| bprm | 404 | fs/binfmt_elf.c | bprm->argc++; |
| bprm | 407 | fs/binfmt_elf.c | if (!bprm->p) { |
| bprm | 417 | fs/binfmt_elf.c | flush_old_exec(bprm); |
| bprm | 428 | fs/binfmt_elf.c | bprm->p += change_ldt(0, bprm->page); |
| bprm | 429 | fs/binfmt_elf.c | current->mm->start_stack = bprm->p; |
| bprm | 501 | fs/binfmt_elf.c | current->executable = bprm->inode; |
| bprm | 502 | fs/binfmt_elf.c | bprm->inode->i_count++; |
| bprm | 506 | fs/binfmt_elf.c | bprm->p -= MAX_ARG_PAGES*PAGE_SIZE; |
| bprm | 507 | fs/binfmt_elf.c | bprm->p = (unsigned long) |
| bprm | 508 | fs/binfmt_elf.c | create_elf_tables((char *)bprm->p, |
| bprm | 509 | fs/binfmt_elf.c | bprm->argc, |
| bprm | 510 | fs/binfmt_elf.c | bprm->envc, |
| bprm | 520 | fs/binfmt_elf.c | current->mm->start_stack = bprm->p; |
| bprm | 521 | fs/binfmt_elf.c | current->suid = current->euid = bprm->e_uid; |
| bprm | 522 | fs/binfmt_elf.c | current->sgid = current->egid = bprm->e_gid; |
| bprm | 539 | fs/binfmt_elf.c | regs->esp = bprm->p; /* stack pointer */ |
| bprm | 464 | fs/exec.c | void flush_old_exec(struct linux_binprm * bprm) |
| bprm | 472 | fs/exec.c | name = bprm->filename; |
| bprm | 515 | fs/exec.c | if (bprm->e_uid != current->euid || bprm->e_gid != current->egid || |
| bprm | 516 | fs/exec.c | !permission(bprm->inode,MAY_READ)) |
| bprm | 541 | fs/exec.c | struct linux_binprm bprm; |
| bprm | 550 | fs/exec.c | bprm.p = PAGE_SIZE*MAX_ARG_PAGES-4; |
| bprm | 552 | fs/exec.c | bprm.page[i] = 0; |
| bprm | 553 | fs/exec.c | retval = open_namei(filename, 0, 0, &bprm.inode, NULL); |
| bprm | 556 | fs/exec.c | bprm.filename = filename; |
| bprm | 557 | fs/exec.c | bprm.argc = count(argv); |
| bprm | 558 | fs/exec.c | bprm.envc = count(envp); |
| bprm | 561 | fs/exec.c | if (!S_ISREG(bprm.inode->i_mode)) { /* must be regular file */ |
| bprm | 565 | fs/exec.c | if (IS_NOEXEC(bprm.inode)) { /* FS mustn't be mounted noexec */ |
| bprm | 569 | fs/exec.c | if (!bprm.inode->i_sb) { |
| bprm | 573 | fs/exec.c | i = bprm.inode->i_mode; |
| bprm | 574 | fs/exec.c | if (IS_NOSUID(bprm.inode) && (((i & S_ISUID) && bprm.inode->i_uid != current-> |
| bprm | 575 | fs/exec.c | euid) || ((i & S_ISGID) && !in_group_p(bprm.inode->i_gid))) && |
| bprm | 582 | fs/exec.c | bprm.e_uid = current->euid; |
| bprm | 583 | fs/exec.c | bprm.e_gid = current->egid; |
| bprm | 585 | fs/exec.c | bprm.e_uid = (i & S_ISUID) ? bprm.inode->i_uid : current->euid; |
| bprm | 586 | fs/exec.c | bprm.e_gid = (i & S_ISGID) ? bprm.inode->i_gid : current->egid; |
| bprm | 588 | fs/exec.c | if (current->euid == bprm.inode->i_uid) |
| bprm | 590 | fs/exec.c | else if (in_group_p(bprm.inode->i_gid)) |
| bprm | 593 | fs/exec.c | !((bprm.inode->i_mode & 0111) && suser())) { |
| bprm | 597 | fs/exec.c | memset(bprm.buf,0,sizeof(bprm.buf)); |
| bprm | 600 | fs/exec.c | retval = read_exec(bprm.inode,0,bprm.buf,128); |
| bprm | 604 | fs/exec.c | if ((bprm.buf[0] == '#') && (bprm.buf[1] == '!') && (!sh_bang)) { |
| bprm | 612 | fs/exec.c | iput(bprm.inode); |
| bprm | 613 | fs/exec.c | bprm.buf[127] = '\0'; |
| bprm | 614 | fs/exec.c | if ((cp = strchr(bprm.buf, '\n')) == NULL) |
| bprm | 615 | fs/exec.c | cp = bprm.buf+127; |
| bprm | 617 | fs/exec.c | while (cp > bprm.buf) { |
| bprm | 624 | fs/exec.c | for (cp = bprm.buf+2; (*cp == ' ') || (*cp == '\t'); cp++); |
| bprm | 644 | fs/exec.c | bprm.p = copy_strings(bprm.envc, envp, bprm.page, bprm.p, 0); |
| bprm | 645 | fs/exec.c | bprm.p = copy_strings(--bprm.argc, argv+1, bprm.page, bprm.p, 0); |
| bprm | 655 | fs/exec.c | bprm.p = copy_strings(1, &bprm.filename, bprm.page, bprm.p, 2); |
| bprm | 656 | fs/exec.c | bprm.argc++; |
| bprm | 658 | fs/exec.c | bprm.p = copy_strings(1, &i_arg, bprm.page, bprm.p, 2); |
| bprm | 659 | fs/exec.c | bprm.argc++; |
| bprm | 661 | fs/exec.c | bprm.p = copy_strings(1, &i_name, bprm.page, bprm.p, 2); |
| bprm | 662 | fs/exec.c | bprm.argc++; |
| bprm | 663 | fs/exec.c | if (!bprm.p) { |
| bprm | 672 | fs/exec.c | retval = open_namei(interp, 0, 0, &bprm.inode, NULL); |
| bprm | 678 | fs/exec.c | bprm.p = copy_strings(bprm.envc,envp,bprm.page,bprm.p,0); |
| bprm | 679 | fs/exec.c | bprm.p = copy_strings(bprm.argc,argv,bprm.page,bprm.p,0); |
| bprm | 680 | fs/exec.c | if (!bprm.p) { |
| bprm | 686 | fs/exec.c | bprm.sh_bang = sh_bang; |
| bprm | 692 | fs/exec.c | retval = fn(&bprm, regs); |
| bprm | 694 | fs/exec.c | iput(bprm.inode); |
| bprm | 701 | fs/exec.c | iput(bprm.inode); |
| bprm | 704 | fs/exec.c | free_page(bprm.page[i]); |
| bprm | 773 | fs/exec.c | int load_aout_binary(struct linux_binprm * bprm, struct pt_regs * regs) |
| bprm | 778 | fs/exec.c | unsigned long p = bprm->p; |
| bprm | 780 | fs/exec.c | ex = *((struct exec *) bprm->buf); /* exec-header */ |
| bprm | 784 | fs/exec.c | bprm->inode->i_size < ex.a_text+ex.a_data+ex.a_syms+N_TXTOFF(ex)) { |
| bprm | 789 | fs/exec.c | (N_TXTOFF(ex) < bprm->inode->i_sb->s_blocksize)) { |
| bprm | 800 | fs/exec.c | flush_old_exec(bprm); |
| bprm | 810 | fs/exec.c | current->suid = current->euid = bprm->e_uid; |
| bprm | 811 | fs/exec.c | current->sgid = current->egid = bprm->e_gid; |
| bprm | 816 | fs/exec.c | read_exec(bprm->inode, 32, (char *) 0, ex.a_text+ex.a_data); |
| bprm | 821 | fs/exec.c | fd = open_inode(bprm->inode, O_RDONLY); |
| bprm | 831 | fs/exec.c | read_exec(bprm->inode, N_TXTOFF(ex), |
| bprm | 853 | fs/exec.c | current->executable = bprm->inode; |
| bprm | 854 | fs/exec.c | bprm->inode->i_count++; |
| bprm | 859 | fs/exec.c | p += change_ldt(ex.a_text,bprm->page); |
| bprm | 861 | fs/exec.c | p = (unsigned long) create_tables((char *)p,bprm->argc,bprm->envc,0); |
| bprm | 42 | include/linux/binfmts.h | extern void flush_old_exec(struct linux_binprm * bprm); |
| bprm | 30 | kernel/ksyms.c | extern void flush_old_exec(struct linux_binprm * bprm); |