diff -Naur -X exclude-files ac_cur/arch/um/kernel/mem_user.c ac/arch/um/kernel/mem_user.c --- ac_cur/arch/um/kernel/mem_user.c Sat Sep 15 15:56:11 2001 +++ ac/arch/um/kernel/mem_user.c Sat Sep 15 16:59:26 2001 @@ -83,6 +83,8 @@ perror("write"); exit(1); } + if(fcntl(fd, F_SETFD, 1) != 0) + perror("Setting FD_CLOEXEC failed"); return(fd); } diff -Naur -X exclude-files ac_cur/arch/um/kernel/process.c ac/arch/um/kernel/process.c --- ac_cur/arch/um/kernel/process.c Sat Sep 15 15:56:11 2001 +++ ac/arch/um/kernel/process.c Sat Sep 15 16:59:26 2001 @@ -304,7 +304,8 @@ (void *) sp, NULL); sp += sizeof(unsigned long); } - ptrace(PTRACE_KILL, pid, 0, 0); + kill(pid, SIGKILL); + kill(pid, SIGCONT); waitpid(pid, NULL, 0); n = page_size() - (UM_SP(regs_out) & ~page_mask()); *stack_out = stack; diff -Naur -X exclude-files ac_cur/arch/um/kernel/tlb.c ac/arch/um/kernel/tlb.c --- ac_cur/arch/um/kernel/tlb.c Sat Sep 15 15:56:11 2001 +++ ac/arch/um/kernel/tlb.c Sat Sep 15 16:59:26 2001 @@ -205,6 +205,8 @@ return(flags); } +extern int honeypot; + static struct vm_area_struct *process_vmas; static int num_process_vmas = 0; @@ -213,6 +215,7 @@ { struct vm_area_struct *vma; + if(honeypot && (end == TASK_SIZE)) return; vma = &process_vmas[num_process_vmas++]; *vma = ((struct vm_area_struct) { &kernel_maps, start, end, NULL, diff -Naur -X exclude-files ac_cur/arch/um/kernel/um_arch.c ac/arch/um/kernel/um_arch.c --- ac_cur/arch/um/kernel/um_arch.c Sat Sep 15 15:56:11 2001 +++ ac/arch/um/kernel/um_arch.c Sat Sep 15 16:59:26 2001 @@ -248,9 +248,12 @@ else if(!strncmp(argv[i], "umid=", strlen("umid="))){ set_umid(&argv[i][strlen("umid=")]); } - else if(!strncmp(argv[i], "iomem=",strlen("iomem="))){ + else if(!strncmp(argv[i], "iomem=", strlen("iomem="))){ parse_iomem(&argv[i][strlen("iomem=")]); - } + } + else if(!strcmp(argv[i], "honeypot")){ + honeypot = 1; + } else if(!strcmp(argv[i], "--version")){ printf("%s\n", system_utsname.release); exit(0); diff -Naur -X exclude-files ac_cur/include/asm-um/a.out.h ac/include/asm-um/a.out.h --- ac_cur/include/asm-um/a.out.h Sat Sep 15 15:56:38 2001 +++ ac/include/asm-um/a.out.h Sat Sep 15 16:59:27 2001 @@ -7,6 +7,10 @@ extern unsigned long stacksizelim; -#define STACK_TOP (TASK_SIZE - (stacksizelim * (NESTING + 1))) +extern int honeypot; + +#define STACK_ROOM (honeypot ? (0) : (stacksizelim * (NESTING + 1))) + +#define STACK_TOP (TASK_SIZE - STACK_ROOM) #endif