nix-rust / nix

Rust friendly bindings to *nix APIs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Change the signature of `ptrace::write` to make it safe

ShuiRuTian opened this issue · comments

For now, the whole impl of write is

pub unsafe fn write(
    pid: Pid,
    addr: AddressType,
    data: *mut c_void,
) -> Result<()> {
    unsafe { ptrace_other(Request::PTRACE_POKEDATA, pid, addr, data).map(drop) }
}

In ptrace(2), it's mentioned data is "a word", which should be the same as the return type of read(c_long, in current code).

So, why don't we change the type of data to c_long, and make it safe?

Or maybe the type could be a byte array like [u8; sizeof::<c_long>()]

It was made unsafe indeed for this argument, see #1245, so I think this would be a reasonable change.