Lines Matching defs:privs
52 int pam_modutil_drop_priv(pam_handle_t *pamh, struct _ykpam_privs *privs,
54 privs->saved_euid = geteuid();
55 privs->saved_egid = getegid();
57 if ((privs->saved_euid == pw->pw_uid) && (privs->saved_egid == pw->pw_gid)) {
58 D(privs->debug_file, "Privilges already dropped, pretend it is all right");
62 privs->saved_groups_length = getgroups(0, NULL);
63 if (privs->saved_groups_length < 0) {
64 D(privs->debug_file, "getgroups: %s", strerror(errno));
68 if (privs->saved_groups_length > SAVED_GROUPS_MAX_LEN) {
69 D(privs->debug_file, "too many groups, limiting.");
70 privs->saved_groups_length = SAVED_GROUPS_MAX_LEN;
73 if (privs->saved_groups_length > 0) {
74 if (getgroups(privs->saved_groups_length, privs->saved_groups) < 0) {
75 D(privs->debug_file, "getgroups: %s", strerror(errno));
81 D(privs->debug_file, "initgroups: %s", strerror(errno));
86 D(privs->debug_file, "setegid: %s", strerror(errno));
91 D(privs->debug_file, "seteuid: %s", strerror(errno));
100 int pam_modutil_regain_priv(pam_handle_t *pamh, struct _ykpam_privs *privs) {
101 if ((privs->saved_euid == geteuid()) && (privs->saved_egid == getegid())) {
102 D(privs->debug_file,
107 if (seteuid(privs->saved_euid) < 0) {
108 D(privs->debug_file, "seteuid: %s", strerror(errno));
112 if (setegid(privs->saved_egid) < 0) {
113 D(privs->debug_file, "setegid: %s", strerror(errno));
117 if (setgroups(privs->saved_groups_length, privs->saved_groups) < 0) {
118 D(privs->debug_file, "setgroups: %s", strerror(errno));