Skip to content
Snippets Groups Projects
Verified Commit c4339731 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

[Cache] Do not needlessly push euid around

parent b009c807
No related branches found
No related tags found
No related merge requests found
......@@ -54,6 +54,11 @@ impl Cache {
}
fn drop_privileges(&self, username: &String) -> Result<uid_t, &str> {
let current_euid;
unsafe {
current_euid = geteuid();
};
let nam = match CString::new(username.as_str()) {
Ok(nam) => nam,
Err(_) => return Err("Invalid username in lookup")
......@@ -63,7 +68,7 @@ impl Cache {
target_euid = (*getpwnam(nam.as_ptr())).pw_uid;
};
if target_euid == self.original_euid {
if target_euid == current_euid {
debug!("No need to drop privileges, already running as {}", username);
return Ok(self.original_euid);
} else if self.original_euid == 0 {
......@@ -85,9 +90,18 @@ impl Cache {
}
fn restore_privileges(&self) {
debug!("Restoring privileges");
let current_euid;
unsafe {
seteuid(self.original_euid);
current_euid = geteuid();
};
if current_euid != self.original_euid {
debug!("Restoring privileges");
unsafe {
seteuid(self.original_euid);
};
} else {
debug!("No need to restore privileges, already running as original user");
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment