if (db == &subordinate_uid_db)
sub_uid_close(true);
else
- sub_gid_close();
+ sub_gid_close(true);
}
return ret;
return remove_range (&subordinate_gid_db, owner, start, count);
}
-int sub_gid_close (void)
+int sub_gid_close (bool process_selinux)
{
- return commonio_close (&subordinate_gid_db, true);
+ return commonio_close (&subordinate_gid_db, process_selinux);
}
int sub_gid_unlock (void)
if (id_type == ID_TYPE_UID)
sub_uid_close(true);
else
- sub_gid_close();
+ sub_gid_close(true);
*in_ranges = ranges;
return count;
if (id_type == ID_TYPE_UID)
sub_uid_close(true);
else
- sub_gid_close();
+ sub_gid_close(true);
return n;
}
sub_uid_close(true);
sub_uid_unlock();
} else {
- sub_gid_close();
+ sub_gid_close(true);
sub_gid_unlock();
}
sub_uid_close(true);
sub_uid_unlock();
} else {
- sub_gid_close();
+ sub_gid_close(true);
sub_gid_unlock();
}
extern int find_subid_owners(unsigned long id, enum subid_type id_type, uid_t **uids);
extern void free_subordinate_ranges(struct subordinate_range **ranges, int count);
-extern int sub_gid_close(void);
+extern int sub_gid_close(bool process_selinux);
extern bool have_sub_gids(const char *owner, gid_t start, unsigned long count);
extern bool sub_gid_file_present (void);
extern bool local_sub_gid_assigned(const char *owner);
write_setgroups(proc_dir_fd, allow_setgroups);
write_mapping(proc_dir_fd, ranges, mappings, "gid_map", pw->pw_uid);
if (want_subgid_file())
- sub_gid_close();
+ sub_gid_close(true);
return EXIT_SUCCESS;
}
SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_uid_dbname ()));
fail_exit (EXIT_FAILURE);
}
- if (is_sub_gid && (sub_gid_close () == 0)) {
+ if (is_sub_gid && (sub_gid_close (true) == 0)) {
fprintf (stderr,
_("%s: failure while writing changes to %s\n"), Prog, sub_gid_dbname ());
SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_gid_dbname ()));
SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_uid_dbname ()));
fail_exit (E_SUB_UID_UPDATE);
}
- if (is_sub_gid && (sub_gid_close () == 0)) {
+ if (is_sub_gid && (sub_gid_close (true) == 0)) {
fprintf (stderr,
_("%s: failure while writing changes to %s\n"), Prog, sub_gid_dbname ());
SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_gid_dbname ()));
}
if (is_sub_gid) {
- if (sub_gid_close () == 0) {
+ if (sub_gid_close (true) == 0) {
fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sub_gid_dbname ());
SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_gid_dbname ()));
fail_exit (E_SUB_GID_UPDATE);
sub_uid_locked = false;
}
if (wflg || Wflg) {
- if (sub_gid_close () == 0) {
+ if (sub_gid_close (true) == 0) {
fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sub_gid_dbname ());
SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_gid_dbname ()));
fail_exit (E_SUB_GID_UPDATE);