if (doclose) {
if (db == &subordinate_uid_db)
- sub_uid_close();
+ sub_uid_close(true);
else
sub_gid_close();
}
return remove_range (&subordinate_uid_db, owner, start, count);
}
-int sub_uid_close (void)
+int sub_uid_close (bool process_selinux)
{
- return commonio_close (&subordinate_uid_db, true);
+ return commonio_close (&subordinate_uid_db, process_selinux);
}
int sub_uid_unlock (void)
out:
if (id_type == ID_TYPE_UID)
- sub_uid_close();
+ sub_uid_close(true);
else
sub_gid_close();
}
if (id_type == ID_TYPE_UID)
- sub_uid_close();
+ sub_uid_close(true);
else
sub_gid_close();
out:
if (id_type == ID_TYPE_UID) {
- sub_uid_close();
+ sub_uid_close(true);
sub_uid_unlock();
} else {
sub_gid_close();
ret = remove_range(db, range->owner, range->start, range->count) == 1;
if (id_type == ID_TYPE_UID) {
- sub_uid_close();
+ sub_uid_close(true);
sub_uid_unlock();
} else {
sub_gid_close();
#include "../libsubid/subid.h"
-extern int sub_uid_close(void);
+extern int sub_uid_close(bool process_selinux);
extern bool have_sub_uids(const char *owner, uid_t start, unsigned long count);
extern bool sub_uid_file_present (void);
extern bool local_sub_uid_assigned(const char *owner);
if (proc == NULL) {
perror ("opendir /proc");
#ifdef ENABLE_SUBIDS
- sub_uid_close();
+ sub_uid_close(true);
#endif
return 0;
}
perror ("stat (\"/\")");
(void) closedir (proc);
#ifdef ENABLE_SUBIDS
- sub_uid_close();
+ sub_uid_close(true);
#endif
return 0;
}
if (check_status (name, tmp_d_name, uid) != 0) {
(void) closedir (proc);
#ifdef ENABLE_SUBIDS
- sub_uid_close();
+ sub_uid_close(true);
#endif
fprintf (log_get_logfd(),
_("%s: user %s is currently used by process %d\n"),
(void) closedir (proc);
(void) closedir (task_dir);
#ifdef ENABLE_SUBIDS
- sub_uid_close();
+ sub_uid_close(true);
#endif
fprintf (log_get_logfd(),
_("%s: user %s is currently used by process %d\n"),
(void) closedir (proc);
#ifdef ENABLE_SUBIDS
- sub_uid_close();
+ sub_uid_close(true);
#endif /* ENABLE_SUBIDS */
return 0;
}
write_mapping(proc_dir_fd, ranges, mappings, "uid_map", pw->pw_uid);
if (want_subuid_file())
- sub_uid_close();
+ sub_uid_close(true);
return EXIT_SUCCESS;
}
fail_exit (EXIT_FAILURE);
}
#ifdef ENABLE_SUBIDS
- if (is_sub_uid && (sub_uid_close () == 0)) {
+ if (is_sub_uid && (sub_uid_close (true) == 0)) {
fprintf (stderr,
_("%s: failure while writing changes to %s\n"), Prog, sub_uid_dbname ());
SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_uid_dbname ()));
close_group_files ();
#ifdef ENABLE_SUBIDS
- if (is_sub_uid && (sub_uid_close () == 0)) {
+ if (is_sub_uid && (sub_uid_close (true) == 0)) {
fprintf (stderr,
_("%s: failure while writing changes to %s\n"), Prog, sub_uid_dbname ());
SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_uid_dbname ()));
#ifdef ENABLE_SUBIDS
if (is_sub_uid) {
- if (sub_uid_close () == 0) {
+ if (sub_uid_close (true) == 0) {
fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sub_uid_dbname ());
SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_uid_dbname ()));
fail_exit (E_SUB_UID_UPDATE);
#ifdef ENABLE_SUBIDS
if (vflg || Vflg) {
- if (sub_uid_close () == 0) {
+ if (sub_uid_close (true) == 0) {
fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sub_uid_dbname ());
SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_uid_dbname ()));
fail_exit (E_SUB_UID_UPDATE);