From e6e385e3a5b8a875d728706181078f01749e8882 Mon Sep 17 00:00:00 2001 From: faissaloo Date: Mon, 25 Jul 2016 13:07:30 +0100 Subject: Another bugfix for directory parsing being completely broken --- sh | Bin 1688 -> 1728 bytes sh.asm | 14 +++++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/sh b/sh index 55db507..1efff95 100755 Binary files a/sh and b/sh differ diff --git a/sh.asm b/sh.asm index ef147ac..9aafb7d 100644 --- a/sh.asm +++ b/sh.asm @@ -2,6 +2,7 @@ section .data sigs dd 0x2 cpid dd 0x0 eol db `\n` + eol_mask db `\n`,`\n`,`\n`,`\n`,`\n`,`\n`,`\n`,`\n`,`\n`,`\n`,`\n`,`\n`,`\n`,`\n`,`\n`,`\n` env_str db "/etc/environment", 0x0 prompt_str db "[0xdeadbeef] " @@ -231,9 +232,9 @@ _parse1r: jmp _parse1 _sabsf: - test r8, r8 - je _parse1r - mov r13, 0x2 + cmp r8, 1 + jg _parse1r + mov r13, 1 jmp _parse1r _subz: @@ -304,7 +305,7 @@ _parse6: _parse7: ; absolute path mov rax, sys_access - mov rdi, rbx + mov rdi, r15 mov rsi, X_OK syscall @@ -318,12 +319,15 @@ _parse7: ; absolute path ;input: r12 (return address), r15 (buffer) ;output: r8 (length) _strlen: - mov r8, -17 ;We're always going to have to take 1 away because of the newline + mov r8, -16 xchg rsi, rcx ;bacup rcx, let rsi get clobbered + MovDqU xmm1, [eol_mask] _strlen1: add r8, 16 PcmpIstrI xmm0, [r15+r8],0 jnz _strlen1 + PcmpIstrI xmm1, [r15+r8],0 + jnz _strlen1 add r8, rcx xchg rsi,rcx jmp _parse1 -- cgit v1.2.3