diff --git a/src/stub/src/i386-linux.elf-entry.S b/src/stub/src/i386-linux.elf-entry.S index 2b8aeb73..e3f82811 100644 --- a/src/stub/src/i386-linux.elf-entry.S +++ b/src/stub/src/i386-linux.elf-entry.S @@ -177,6 +177,14 @@ AT_PAGESZ= 6 // /usr/include/elf.h sub u_len,%esp // alloca and $-2*NBPW,%esp // align stack + push %edi // save + lea NBPW(%esp,r_unc),%edi // after unfolded code + mov old_sp,%ecx + sub %edi,%ecx + mov $0xa5,%al + rep stosb // memcheck defense + pop %edi // restore + lea (2*NBPW + D_FOLD)(r_unc),%eax; add %esp,%eax and $-2*NBPW,%eax; push %eax // MATCH_31 where to put pathname mov %eax,%ecx @@ -357,7 +365,7 @@ uname: .globl uname push %ebp; mov %esp,%ebp push %ebx mov 2*NBPW(%ebp),%ebx - push $__NR_olduname; pop %eax; int $0x80 + push $__NR_uname; pop %eax; int $0x80 pop %ebx; pop %ebp ret diff --git a/src/stub/src/i386-linux.elf-fold.S b/src/stub/src/i386-linux.elf-fold.S index 79dd8018..dbade8c8 100644 --- a/src/stub/src/i386-linux.elf-fold.S +++ b/src/stub/src/i386-linux.elf-fold.S @@ -334,7 +334,7 @@ uname: .globl uname mov %ebp,%esp push %ebx mov %ebx, [2*NBPW + %ebp] - push __NR_olduname; pop %eax; int 0x80 + push __NR_uname; pop %eax; int 0x80 pop %ebx; pop %ebp ret