|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
diff -up shadow-4.1.2/libmisc/find_new_ids.c.sysAccountDownhill shadow-4.1.2/libmisc/find_new_ids.c
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
--- shadow-4.1.2/libmisc/find_new_ids.c.sysAccountDownhill 2008-05-26 14:52:49.000000000 +0200
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
+++ shadow-4.1.2/libmisc/find_new_ids.c 2008-05-26 14:58:55.000000000 +0200
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
@@ -52,6 +52,7 @@ int find_new_uid (int sys_user, uid_t *u
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
{
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
const struct passwd *pwd;
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
uid_t uid_min, uid_max, user_id;
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ char * index;
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
assert (uid != NULL);
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
@@ -62,6 +63,8 @@ int find_new_uid (int sys_user, uid_t *u
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
uid_min = getdef_unum ("SYS_UID_MIN", 1);
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
uid_max = getdef_unum ("UID_MIN", 500) - 1;
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
uid_max = getdef_unum ("SYS_UID_MAX", uid_max);
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ index = alloca (sizeof (char) * uid_max +1);
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ memset (index, 0, sizeof (char) * uid_max + 1);
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
}
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
if ( (NULL != preferred_uid)
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
@@ -91,12 +94,28 @@ int find_new_uid (int sys_user, uid_t *u
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
pw_rewind ();
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
while ( ((pwd = getpwent ()) != NULL)
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
|| ((pwd = pw_next ()) != NULL)) {
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
- if ((pwd->pw_uid >= user_id) && (pwd->pw_uid <= uid_max)) {
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
- user_id = pwd->pw_uid + 1;
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ if (sys_user == 0) {
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ if ((pwd->pw_uid >= user_id) && (pwd->pw_uid <= uid_max)) {
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ user_id = pwd->pw_uid + 1;
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ else {
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ /* create index of occupied system accounts UIDs */
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ if (pwd->pw_uid <= uid_max)
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ index[pwd->pw_uid] = 1;
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
}
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
}
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
endpwent ();
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ /* find free system account */
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ if(sys_user) {
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ for( user_id = uid_max; (user_id >= uid_min) && index[user_id]; user_id--);
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ if ( user_id < uid_min ) {
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ fputs (_("Can't get unique UID (no more available UIDs)\n"), stderr);
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ return -1;
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
+
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
/*
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
* If a user with UID equal to UID_MAX exists, the above algorithm
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
* will give us UID_MAX+1 even if not unique. Search for the first
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
@@ -135,6 +154,7 @@ int find_new_gid (int sys_group, gid_t *
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
{
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
const struct group *grp;
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
gid_t gid_min, gid_max, group_id;
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ char * index;
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
assert (gid != NULL);
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
@@ -145,6 +165,8 @@ int find_new_gid (int sys_group, gid_t *
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
gid_min = getdef_unum ("SYS_GID_MIN", 1);
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
gid_max = getdef_unum ("GID_MIN", 500) - 1;
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
gid_max = getdef_unum ("SYS_GID_MAX", gid_max);
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ index = alloca (sizeof (char) * gid_max +1);
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ memset (index, 0, sizeof (char) * gid_max + 1);
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
}
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
if ( (NULL != preferred_gid)
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
@@ -173,12 +195,28 @@ int find_new_gid (int sys_group, gid_t *
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
gr_rewind ();
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
while ( ((grp = getgrent ()) != NULL)
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
|| ((grp = gr_next ()) != NULL)) {
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
- if ((grp->gr_gid >= group_id) && (grp->gr_gid <= gid_max)) {
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
- group_id = grp->gr_gid + 1;
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
+ if (sys_group == 0) {
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
+ if ((grp->gr_gid >= group_id) && (grp->gr_gid <= gid_max)) {
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
+ group_id = grp->gr_gid + 1;
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
+ else {
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
+ /* create index of occupied system accounts GIDs */
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
+ if (grp->gr_gid <= gid_max)
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
+ index[grp->gr_gid] = 1;
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
}
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
}
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
endgrent ();
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ /* find free system account */
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ if(sys_group) {
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ for( group_id = gid_max; (group_id >= gid_min) && index[group_id]; group_id--);
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ if ( group_id < gid_min ) {
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
+ fputs (_("Can't get unique GID (no more available GIDs)\n"), stderr);
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
+ return -1;
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
79c2e98 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
+
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
/*
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
* If a group with GID equal to GID_MAX exists, the above algorithm
|
|
![](https://seccdn.libravatar.org/avatar/11ab33e42b90ad33e3a94f1a8146947bf50f6a3054fe9550956ef93ddd2e1fad?s=16&d=retro) |
b83095d |
* will give us GID_MAX+1 even if not unique. Search for the first
|