@@ -5,27 +5,29 @@ use libc::{
55 c_int, kill, sigaction, sigaddset, sigemptyset, sighandler_t, sigprocmask, sigset_t, sigwait,
66 waitpid, SA_NOCLDSTOP , SA_RESTART , SIGCHLD , SIGUSR1 , SIG_BLOCK , SIG_UNBLOCK ,
77} ;
8- use nix:: unistd:: { getgid , getuid , setgroups, setresgid, setresuid, Gid , Uid } ;
8+ use nix:: unistd:: { setgroups, setresgid, setresuid, Gid , Uid } ;
99use std:: ffi:: CStr ;
1010use std:: ffi:: CString ;
1111use std:: io:: { Error , ErrorKind } ;
1212use std:: mem:: { size_of, zeroed, MaybeUninit } ;
1313use std:: os:: raw:: c_char;
1414use std:: os:: unix:: io:: RawFd ;
15+ use std:: ptr;
1516use std:: sync:: mpsc;
1617use std:: thread;
1718use std:: time:: Duration ;
18- use std:: { env, ptr} ;
1919
2020mod cli;
2121mod dep_tracer;
2222mod installer;
23+ mod utils;
2324
2425use crate :: cli:: { Cli , Commands , Outputs } ;
2526use crate :: dep_tracer:: event_stream_handler;
2627use crate :: dep_tracer:: SyscallEvent ;
2728use crate :: dep_tracer:: { CTXT , LOGS , SETS } ;
2829use crate :: installer:: installer;
30+ use crate :: utils:: invoker_permissions;
2931use trace_v3:: sys_enter_info_t;
3032use trace_v3:: sys_exit_info_t;
3133
@@ -36,18 +38,6 @@ extern "C" fn sigchld_handler(_sig: i32) {
3638 RUNNING . store ( false , Ordering :: Relaxed ) ;
3739}
3840
39- fn invoker_permissions ( ) -> Result < ( u32 , u32 ) > {
40- let uid = match env:: var ( "SUDO_UID" ) . ok ( ) {
41- Some ( uid) => uid. parse ( ) ?,
42- None => getuid ( ) . as_raw ( ) , // if invoking with setuid, use ruid
43- } ;
44- let gid = match env:: var ( "SUDO_GID" ) . ok ( ) {
45- Some ( gid) => gid. parse ( ) ?,
46- None => getgid ( ) . as_raw ( ) , // if invoking with setuid, use rgid
47- } ;
48- Ok ( ( uid, gid) )
49- }
50-
5141fn monitor_pid ( pid : i32 ) -> std:: io:: Result < RawFd > {
5242 unsafe {
5343 let fd = libc:: syscall ( libc:: SYS_pidfd_open , pid, 0 ) ;
0 commit comments