It's probably good idea to call setgroups() to cleanup groups,
but it introduces a regression as some mount helpers depend on
supplementary groups like "network" etc.
Fixes: https://github.com/karelzak/util-linux/issues/1398
Signed-off-by: Karel Zak <kzak@redhat.com>
static inline int drop_permissions(void)
{
- gid_t newgid = getgid();
-
errno = 0;
- /* drop supplementary groups */
- if (geteuid() == 0 && setgroups(1, &newgid) != 0)
- goto fail;
-
/* drop GID */
- if (setgid(newgid) < 0)
+ if (setgid(getgid()) < 0)
goto fail;
/* drop UID */