1 /* Copyright 2015 Nathan Holstein */
3 #include <sys/resource.h>
14 setusercontext(login_cap_t *lc, struct passwd *pw, uid_t uid, unsigned int flags)
18 if (lc != NULL || pw == NULL ||
19 (flags & ~(LOGIN_SETGROUP | LOGIN_SETPRIORITY |
20 LOGIN_SETRESOURCES | LOGIN_SETUMASK |
21 LOGIN_SETUSER)) != 0) {
26 if (flags & LOGIN_SETGROUP) {
27 if ((ret = setgid(pw->pw_gid)) != 0)
29 if ((ret = initgroups(pw->pw_name, pw->pw_gid)) != 0)
33 if (flags & LOGIN_SETPRIORITY) {
34 if ((ret = setpriority(PRIO_PROCESS, getpid(), 0)) != 0)
36 if ((ret = setpriority(PRIO_USER, uid, 0)) != 0)
40 if (flags & LOGIN_SETRESOURCES) {
43 if (flags & LOGIN_SETUMASK)
44 umask(S_IWGRP | S_IWOTH);
46 if (flags & LOGIN_SETUSER)