return EXIT_FAILURE;
}
- if (!sub_gid_open(O_RDONLY)) {
+ if (want_subgid_file() && !sub_gid_open(O_RDONLY)) {
fprintf (stderr,
_("%s: cannot open %s: %s\n"),
Prog, sub_gid_dbname (), strerror (errno));
write_setgroups(proc_dir_fd, allow_setgroups);
write_mapping(proc_dir_fd, ranges, mappings, "gid_map", pw->pw_uid);
- sub_gid_close();
+ if (want_subgid_file())
+ sub_gid_close();
return EXIT_SUCCESS;
}
return EXIT_FAILURE;
}
- if (!sub_uid_open(O_RDONLY)) {
+ if (want_subuid_file() && !sub_uid_open(O_RDONLY)) {
fprintf (stderr,
_("%s: cannot open %s: %s\n"),
Prog, sub_uid_dbname (), strerror (errno));
verify_ranges(pw, ranges, mappings);
write_mapping(proc_dir_fd, ranges, mappings, "uid_map", pw->pw_uid);
- sub_uid_close();
+ if (want_subuid_file())
+ sub_uid_close();
return EXIT_SUCCESS;
}
is_shadow_grp = sgr_file_present ();
#endif
#ifdef ENABLE_SUBIDS
- is_sub_uid = sub_uid_file_present () && !rflg;
- is_sub_gid = sub_gid_file_present () && !rflg;
+ is_sub_uid = want_subuid_file() && sub_uid_file_present() && !rflg;
+ is_sub_gid = want_subgid_file() && sub_gid_file_present() && !rflg;
#endif /* ENABLE_SUBIDS */
open_files ();
/*
* Add subordinate uids if the user does not have them.
*/
- if (is_sub_uid && want_subuid_file() && !local_sub_uid_assigned(fields[0])) {
+ if (is_sub_uid && !local_sub_uid_assigned(fields[0])) {
uid_t sub_uid_start = 0;
unsigned long sub_uid_count = 0;
if (find_new_sub_uids(&sub_uid_start, &sub_uid_count) != 0)
/*
* Add subordinate gids if the user does not have them.
*/
- if (is_sub_gid && want_subgid_file() && !local_sub_gid_assigned(fields[0])) {
+ if (is_sub_gid && !local_sub_gid_assigned(fields[0])) {
gid_t sub_gid_start = 0;
unsigned long sub_gid_count = 0;
if (find_new_sub_gids(&sub_gid_start, &sub_gid_count) != 0) {
uid_max = getdef_ulong ("UID_MAX", 60000UL);
subuid_count = getdef_ulong ("SUB_UID_COUNT", 65536);
subgid_count = getdef_ulong ("SUB_GID_COUNT", 65536);
- is_sub_uid = subuid_count > 0 && sub_uid_file_present () &&
+ is_sub_uid = want_subuid_file () &&
+ subuid_count > 0 && sub_uid_file_present () &&
(!rflg || Fflg) &&
(!user_id || (user_id <= uid_max && user_id >= uid_min));
- is_sub_gid = subgid_count > 0 && sub_gid_file_present () &&
+ is_sub_gid = want_subgid_file() &&
+ subgid_count > 0 && sub_gid_file_present() &&
(!rflg || Fflg) &&
(!user_id || (user_id <= uid_max && user_id >= uid_min));
#endif /* ENABLE_SUBIDS */
is_shadow_grp = sgr_file_present ();
#endif /* SHADOWGRP */
#ifdef ENABLE_SUBIDS
- is_sub_uid = sub_uid_file_present ();
- is_sub_gid = sub_gid_file_present ();
+ is_sub_uid = want_subuid_file() && sub_uid_file_present();
+ is_sub_gid = want_subgid_file() && sub_gid_file_present();
#endif /* ENABLE_SUBIDS */
/*
is_shadow_grp = sgr_file_present ();
#endif
#ifdef ENABLE_SUBIDS
- is_sub_uid = sub_uid_file_present ();
- is_sub_gid = sub_gid_file_present ();
+ is_sub_uid = want_subuid_file() && sub_uid_file_present();
+ is_sub_gid = want_subgid_file() && sub_gid_file_present();
#endif /* ENABLE_SUBIDS */
process_flags (argc, argv);