From 9d6530f4ef3b45b158e0f19e75219a621902bdba Mon Sep 17 00:00:00 2001 From: Luca Fulchir Date: Wed, 27 Jan 2021 11:33:41 +0100 Subject: [PATCH] Fix group listing: don't add root every time Signed-off-by: Luca Fulchir --- src/base.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/base.rs b/src/base.rs index ece499a..d026759 100644 --- a/src/base.rs +++ b/src/base.rs @@ -749,10 +749,12 @@ pub fn group_access_list() -> io::Result> { Err(io::Error::last_os_error()) } else { - let mut groups = buff.into_iter() + buff.truncate(res as usize); + buff.sort_unstable(); + buff.dedup(); + let groups = buff.into_iter() .filter_map(get_group_by_gid) .collect::>(); - groups.dedup_by_key(|i| i.gid()); Ok(groups) } } @@ -800,7 +802,11 @@ pub fn get_user_groups + ?Sized>(username: &S, gid: gid_t) -> Op None } else { + buff.truncate(count as usize); + buff.sort_unstable(); buff.dedup(); + // allow trivial cast: on macos i is i32, on linux it's already gid_t + #[allow(trivial_numeric_casts)] buff.into_iter() .filter_map(|i| get_group_by_gid(i as gid_t)) .collect::>()