diff --git a/src/cli/run_privileged.rs b/src/cli/run_privileged.rs index 3e7e4157..11a78355 100644 --- a/src/cli/run_privileged.rs +++ b/src/cli/run_privileged.rs @@ -20,7 +20,9 @@ pub fn main(global: GlobalArgs, args: RunPrivilegedArgs) { let mut path = PathBuf::from(xrd); path.push(&wd); if path.exists() { - std::env::set_var(WAYLAND_DISPLAY, &wd); + unsafe { + std::env::set_var(WAYLAND_DISPLAY, &wd); + } } } let mut argv = UstrPtr::new(); diff --git a/src/forker.rs b/src/forker.rs index 44cbcb24..9d5de15c 100644 --- a/src/forker.rs +++ b/src/forker.rs @@ -332,9 +332,11 @@ struct Forker { impl Forker { fn handle(ppid: c::pid_t, socket: OwnedFd) -> ! { - env::set_var("XDG_SESSION_TYPE", "wayland"); - env::remove_var(DISPLAY); - env::remove_var(WAYLAND_DISPLAY); + unsafe { + env::set_var("XDG_SESSION_TYPE", "wayland"); + env::remove_var(DISPLAY); + env::remove_var(WAYLAND_DISPLAY); + } set_process_name("the ol' forker"); setup_deathsig(ppid); reset_signals(); @@ -409,9 +411,11 @@ impl Forker { fn handle_set_env(self: &Rc, var: &[u8], val: Option>) { let var = OsStr::from_bytes(var); - match val { - Some(val) => env::set_var(var, OsStr::from_bytes(&val)), - _ => env::remove_var(var), + unsafe { + match val { + Some(val) => env::set_var(var, OsStr::from_bytes(&val)), + _ => env::remove_var(var), + } } } @@ -513,9 +517,11 @@ impl Forker { c::signal(c::SIGCHLD, c::SIG_DFL); } for (key, val) in env { - match val { - None => env::remove_var(&key), - Some(val) => env::set_var(&key, &val), + unsafe { + match val { + None => env::remove_var(&key), + Some(val) => env::set_var(&key, &val), + } } } let prog = prog.into_ustr();