From a938d903101c38e952a34f698432f7cff6fa5766 Mon Sep 17 00:00:00 2001 From: "fupan.lfp" Date: Wed, 7 Apr 2021 12:00:35 +0800 Subject: [PATCH] rustjail: fix the issue of missing default home env first get the "HOME" env from "/etc/passwd", if there's no corresponding uid entry in /etc/passwd, then set "/" as the home env. Fixes: #1643 Signed-off-by: fupan.lfp --- src/agent/rustjail/src/container.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/agent/rustjail/src/container.rs b/src/agent/rustjail/src/container.rs index ca77a181f4..846257613e 100644 --- a/src/agent/rustjail/src/container.rs +++ b/src/agent/rustjail/src/container.rs @@ -634,12 +634,12 @@ fn do_init_child(cwfd: RawFd) -> Result<()> { env::set_var(v[0], v[1]); } - // set the "HOME" env getting from "/etc/passwd" + // set the "HOME" env getting from "/etc/passwd", if + // there's no uid entry in /etc/passwd, set "/" as the + // home env. if env::var_os(HOME_ENV_KEY).is_none() { - match utils::home_dir(guser.uid) { - Ok(home_dir) => env::set_var(HOME_ENV_KEY, home_dir), - Err(e) => log_child!(cfd_log, "failed to get home dir: {:?}", e), - } + let home_dir = utils::home_dir(guser.uid).unwrap_or_else(|_| String::from("/")); + env::set_var(HOME_ENV_KEY, home_dir); } let exec_file = Path::new(&args[0]);