From 07baf70c7a12ea3ed50f8d703178043100ddd7b2 Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Mon, 20 Jul 2020 11:09:56 +0200 Subject: [PATCH] Don't push interpreter as argv[0] --- src/syscall/mod.rs | 2 +- src/syscall/process.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) 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,