--- 2.3.18ac10/fs/binfmt_aout.c Thu Sep 30 17:00:26 1999 +++ 2.3.18ac10-zmagic/fs/binfmt_aout.c Sat Oct 2 23:13:13 1999 @@ -270,7 +270,6 @@ unsigned long fd_offset; unsigned long rlim; int retval; - static unsigned long error_time=0; ex = *((struct exec *) bprm->buf); /* exec-header */ if ((N_MAGIC(ex) != ZMAGIC && N_MAGIC(ex) != OMAGIC && @@ -282,6 +281,7 @@ fd_offset = N_TXTOFF(ex); +#if 0 #ifdef __i386__ if (N_MAGIC(ex) == ZMAGIC && fd_offset != BLOCK_SIZE) { if((jiffies-error_time) >5) @@ -296,6 +296,7 @@ bprm->dentry->d_inode->i_op && bprm->dentry->d_inode->i_op->get_block && (fd_offset < bprm->dentry->d_inode->i_sb->s_blocksize)) { + static unsigned long error_time=0; if((jiffies-error_time) >5) { printk(KERN_NOTICE "N_TXTOFF < BLOCK_SIZE. Please convert binary.\n"); @@ -304,6 +305,7 @@ return -ENOEXEC; } #endif +#endif /* Check initial limits. This avoids letting people circumvent * size limits imposed on them by creating programs with large @@ -383,7 +385,7 @@ if (!file->f_op || !file->f_op->mmap || ((fd_offset & ~PAGE_MASK) != 0)) { fput(file); sys_close(fd); - do_brk(0, ex.a_text+ex.a_data); + do_brk(N_TXTADDR(ex), ex.a_text+ex.a_data); read_exec(bprm->dentry, fd_offset, (char *) N_TXTADDR(ex), ex.a_text+ex.a_data, 0); flush_icache_range((unsigned long) N_TXTADDR(ex), @@ -493,11 +495,13 @@ goto out_putf; } +#if 0 if (N_MAGIC(ex) == ZMAGIC && N_TXTOFF(ex) && (N_TXTOFF(ex) < inode->i_sb->s_blocksize)) { printk("N_TXTOFF < BLOCK_SIZE. Please convert library\n"); goto out_putf; } +#endif if (N_FLAGS(ex)) goto out_putf; @@ -513,9 +517,7 @@ file->f_dentry->d_name.name ); - do_mmap(NULL, start_addr & PAGE_MASK, ex.a_text + ex.a_data + ex.a_bss, - PROT_READ | PROT_WRITE | PROT_EXEC, - MAP_FIXED| MAP_PRIVATE, 0); + do_brk(start_addr, ex.a_text + ex.a_data + ex.a_bss); read_exec(file->f_dentry, N_TXTOFF(ex), (char *)start_addr, ex.a_text + ex.a_data, 0);