From 1fa6f6bfb08023c9f1b0a5c0c12e6ddffa1e7385 Mon Sep 17 00:00:00 2001 From: Jeremy Fitzhardinge Date: Sun, 17 Nov 2019 19:04:28 -0800 Subject: [PATCH] ptrace: add ptrace::seize for Linux --- src/sys/ptrace/linux.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/sys/ptrace/linux.rs b/src/sys/ptrace/linux.rs index b2b984c36b..ffe23d7170 100644 --- a/src/sys/ptrace/linux.rs +++ b/src/sys/ptrace/linux.rs @@ -315,6 +315,21 @@ pub fn attach(pid: Pid) -> Result<()> { } } +/// Attach to a running process, as with `ptrace(PTRACE_SEIZE, ...)` +/// +/// Attaches to the process specified in pid, making it a tracee of the calling process. +#[cfg(all(target_os = "linux", not(any(target_arch = "mips", target_arch = "mips64"))))] +pub fn seize(pid: Pid, options: Options) -> Result<()> { + unsafe { + ptrace_other( + Request::PTRACE_SEIZE, + pid, + ptr::null_mut(), + options.bits() as *mut c_void, + ).map(drop) // ignore the useless return value + } +} + /// Detaches the current running process, as with `ptrace(PTRACE_DETACH, ...)` /// /// Detaches from the process specified in pid allowing it to run freely