diff --git a/src/syscall/mod.rs b/src/syscall/mod.rs index bee91ab..d8f131d 100644 --- a/src/syscall/mod.rs +++ b/src/syscall/mod.rs @@ -169,7 +169,7 @@ pub fn syscall(a: usize, b: usize, c: usize, d: usize, e: usize, f: usize, bp: u let context = context_lock.read(); let name_raw = context.name.lock(); let name = unsafe { core::str::from_utf8_unchecked(&name_raw) }; - if name == "file:/lib/ld64.so.1" || name == "file:/home/user/test" { + if name == "file:/lib/ld64.so.1" || name == "file:/bin/ld" { true } else { false diff --git a/src/syscall/process.rs b/src/syscall/process.rs index 1dd447c..2d39956 100644 --- a/src/syscall/process.rs +++ b/src/syscall/process.rs @@ -1043,13 +1043,13 @@ pub fn fexec_kernel(fd: FileHandle, args: Box<[Box<[u8]>]>, vars: Box<[Box<[u8]> let interp_fd = super::fs::open(&interp, super::flag::O_RDONLY | super::flag::O_CLOEXEC)?; let mut args_vec = Vec::from(args); - args_vec.insert(0, interp.into_boxed_slice()); //TODO: pass file handle in auxv let name_override = name.into_boxed_slice(); - args_vec[1] = name_override.clone(); + args_vec[0] = name_override.clone(); // Drop variables, since fexec_kernel probably won't return drop(elf); + drop(interp); return fexec_kernel( interp_fd,