useradd: check if subid range exists for user

Check if a user already has a subid range before assigning one.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2012929

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
This commit is contained in:
Iker Pedrosa 2022-10-24 10:46:36 +02:00 committed by Serge Hallyn
parent 24b44b686e
commit e0524e813a

View File

@ -2188,14 +2188,14 @@ static void usr_update (unsigned long subuid_count, unsigned long subgid_count)
fail_exit (E_PW_UPDATE); fail_exit (E_PW_UPDATE);
} }
#ifdef ENABLE_SUBIDS #ifdef ENABLE_SUBIDS
if (is_sub_uid && if (is_sub_uid && !local_sub_uid_assigned(user_name) &&
(sub_uid_add(user_name, sub_uid_start, subuid_count) == 0)) { (sub_uid_add(user_name, sub_uid_start, subuid_count) == 0)) {
fprintf (stderr, fprintf (stderr,
_("%s: failed to prepare the new %s entry\n"), _("%s: failed to prepare the new %s entry\n"),
Prog, sub_uid_dbname ()); Prog, sub_uid_dbname ());
fail_exit (E_SUB_UID_UPDATE); fail_exit (E_SUB_UID_UPDATE);
} }
if (is_sub_gid && if (is_sub_gid && !local_sub_gid_assigned(user_name) &&
(sub_gid_add(user_name, sub_gid_start, subgid_count) == 0)) { (sub_gid_add(user_name, sub_gid_start, subgid_count) == 0)) {
fprintf (stderr, fprintf (stderr,
_("%s: failed to prepare the new %s entry\n"), _("%s: failed to prepare the new %s entry\n"),