static void set_unix_security_ctx(uid_t uid, gid_t gid, int ngroups, gid_t *groups) { int max = groups_max(); /* Start context switch */ gain_root(); become_gid(gid); if (syscall(SYS_initgroups, (ngroups > max) ? max : ngroups, groups, uid) == -1 && !non_root_mode()) { DEBUG(0, ("WARNING: failed to set group list " "(%d groups) for UID %d: %s\n", ngroups, uid, strerror(errno))); smb_panic("sys_setgroups failed"); } become_uid(uid); /* end context switch */ }
static BOOL become_id(uid_t uid, gid_t gid) { return become_gid(gid) && become_uid(uid); }
static bool become_id(uid_t uid, gid_t gid) { return become_gid(gid) && become_uid(uid); }