@@ -24,36 +24,19 @@ pub fn handle_exec(
2424 command : & mut Exec ,
2525 encoded_payload : & EncodedPayload ,
2626) -> nix:: Result < Option < PreExec > > {
27- // Check if the program is Chrome or Chromium
28- let program_path = Path :: new ( OsStr :: from_bytes ( & command. program ) ) ;
29- let skip_injection = if let Some ( file_name) = program_path. file_name ( ) {
30- let file_name_bytes = file_name. as_bytes ( ) ;
31- // Check for Chrome or Chromium in the filename (case-insensitive)
32- file_name_bytes. windows ( 6 ) . any ( |w| w == b"Chrome" || w == b"chrome" )
33- || file_name_bytes. windows ( 8 ) . any ( |w| w == b"Chromium" || w == b"chromium" )
34- } else {
35- false
36- } ;
37-
38- if skip_injection {
39- command. envs . retain ( |( name, _) | name != LD_PRELOAD && name != PAYLOAD_ENV_NAME ) ;
27+ let executable_fd = open_executable ( Path :: new ( OsStr :: from_bytes ( & command. program ) ) ) ?;
28+ let executable_mmap = unsafe { Mmap :: map ( & executable_fd) }
29+ . map_err ( |io_error| nix:: Error :: try_from ( io_error) . unwrap_or ( nix:: Error :: UnknownErrno ) ) ?;
30+ if elf:: is_dynamically_linked_to_libc ( executable_mmap) ? {
31+ ensure_env (
32+ & mut command. envs ,
33+ LD_PRELOAD ,
34+ encoded_payload. payload . preload_path . as_os_str ( ) . as_bytes ( ) ,
35+ ) ?;
36+ ensure_env ( & mut command. envs , PAYLOAD_ENV_NAME , & encoded_payload. encoded_string ) ?;
4037 Ok ( None )
4138 } else {
42- let executable_fd = open_executable ( Path :: new ( OsStr :: from_bytes ( & command. program ) ) ) ?;
43- let executable_mmap = unsafe { Mmap :: map ( & executable_fd) } . map_err ( |io_error| {
44- nix:: Error :: try_from ( io_error) . unwrap_or ( nix:: Error :: UnknownErrno )
45- } ) ?;
46- if elf:: is_dynamically_linked_to_libc ( executable_mmap) ? {
47- ensure_env (
48- & mut command. envs ,
49- LD_PRELOAD ,
50- encoded_payload. payload . preload_path . as_os_str ( ) . as_bytes ( ) ,
51- ) ?;
52- ensure_env ( & mut command. envs , PAYLOAD_ENV_NAME , & encoded_payload. encoded_string ) ?;
53- Ok ( None )
54- } else {
55- command. envs . retain ( |( name, _) | name != LD_PRELOAD && name != PAYLOAD_ENV_NAME ) ;
56- Ok ( Some ( PreExec ( encoded_payload. payload . seccomp_payload . clone ( ) ) ) )
57- }
39+ command. envs . retain ( |( name, _) | name != LD_PRELOAD && name != PAYLOAD_ENV_NAME ) ;
40+ Ok ( Some ( PreExec ( encoded_payload. payload . seccomp_payload . clone ( ) ) ) )
5841 }
5942}
0 commit comments