@@ -91,15 +91,16 @@ fn ptrace_peek(request: ptrace::PtraceRequest, pid: Pid, addr: *mut c_void, data
91
91
}
92
92
}
93
93
94
- /// Function for ptrace requests that return values from the data field.
94
+ /// Function for ptrace requests that return values from the data field.
95
95
/// Some ptrace get requests populate structs or larger elements than c_long
96
96
/// and therefore use the data field to return values. This function handles these
97
97
/// requests.
98
98
fn ptrace_get_data < T > ( request : ptrace:: PtraceRequest , pid : Pid ) -> Result < T > {
99
- // Creates an uninitialized pointer to store result in
99
+ // Creates an uninitialized pointer to store result in
100
100
let data: Box < T > = Box :: new ( unsafe { mem:: uninitialized ( ) } ) ;
101
101
let data: * mut c_void = unsafe { mem:: transmute ( data) } ;
102
- ptrace ( request, pid, ptr:: null_mut ( ) , data) ?;
102
+ let res = unsafe { ffi:: ptrace ( request, pid. into ( ) , ptr:: null_mut ( ) , data) } ;
103
+ Errno :: result ( res) ?;
103
104
// Convert back into the original data format and return unboxed value
104
105
let data: Box < T > = unsafe { mem:: transmute ( data) } ;
105
106
Ok ( * data)
@@ -114,7 +115,8 @@ pub fn ptrace_setoptions(pid: Pid, options: ptrace::PtraceOptions) -> Result<()>
114
115
use self :: ptrace:: * ;
115
116
use std:: ptr;
116
117
117
- ptrace ( PTRACE_SETOPTIONS , pid, ptr:: null_mut ( ) , options as * mut c_void ) . map ( drop)
118
+ let res = unsafe { ffi:: ptrace ( PTRACE_SETOPTIONS , pid. into ( ) , ptr:: null_mut ( ) , options as * mut c_void ) } ;
119
+ Errno :: result ( res) . map ( |_| ( ) )
118
120
}
119
121
120
122
/// Gets a ptrace event as described by `ptrace(PTRACE_GETEVENTMSG,...)`
0 commit comments