From 748b1681549067f2e27ab2b9102ef9352cfa8a4c Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Mon, 7 Oct 2024 01:20:43 +0200 Subject: libbb: move is_in_supplementary_groups() from test to libbb function old new delta is_in_supplementary_groups - 54 +54 nexpr 766 721 -45 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/1 up/down: 54/-45) Total: 9 bytes Signed-off-by: Denys Vlasenko --- libbb/bb_getgroups.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'libbb/bb_getgroups.c') diff --git a/libbb/bb_getgroups.c b/libbb/bb_getgroups.c index 5d83c729a..f030d5eac 100644 --- a/libbb/bb_getgroups.c +++ b/libbb/bb_getgroups.c @@ -45,3 +45,23 @@ gid_t* FAST_FUNC bb_getgroups(int *ngroups, gid_t *group_array) *ngroups = n; return group_array; } + +/* Return non-zero if GID is in our supplementary group list. */ +int FAST_FUNC is_in_supplementary_groups(int *pngroups, gid_t **pgroup_array, gid_t gid) +{ + int i; + int ngroups; + gid_t *group_array; + + if (*pngroups == 0) + *pgroup_array = bb_getgroups(pngroups, NULL); + ngroups = *pngroups; + group_array = *pgroup_array; + + /* Search through the list looking for GID. */ + for (i = 0; i < ngroups; i++) + if (gid == group_array[i]) + return 1; + + return 0; +} -- cgit v1.2.3-55-g6feb