+2009-02-22 Nicolas François <nicolas.francois@centraliens.net>
+
+ * libmisc/find_new_gid.c, libmisc/find_new_uid.c: Avoid calling
+ getgrent()/getpwent() after they return NULL. This caused LDAP to
+ return at the beginning of the group/user entries.
+
2009-01-27 Nicolas François <nicolas.francois@centraliens.net>
* man/nologin.8.xml: Fix typo (HYSTORY -> HISTORY).
* some groups were created but the changes were not committed yet.
*/
setgrent ();
- gr_rewind ();
- while ( ((grp = getgrent ()) != NULL)
- || ((grp = gr_next ()) != NULL)) {
+ while ((grp = getgrent ()) != NULL) {
if ((grp->gr_gid >= group_id) && (grp->gr_gid <= gid_max)) {
group_id = grp->gr_gid + 1;
}
}
}
endgrent ();
+ gr_rewind ();
+ while ((grp = getgrent ()) != NULL) {
+ if ((grp->gr_gid >= group_id) && (grp->gr_gid <= gid_max)) {
+ group_id = grp->gr_gid + 1;
+ }
+ /* create index of used GIDs */
+ if (grp->gr_gid <= gid_max) {
+ used_gids[grp->gr_gid] = 1;
+ }
+ }
/*
* If a group with GID equal to GID_MAX exists, the above algorithm
* some users were created but the changes were not committed yet.
*/
setpwent ();
- pw_rewind ();
- while ( ((pwd = getpwent ()) != NULL)
- || ((pwd = pw_next ()) != NULL)) {
+ while ((pwd = getpwent ()) != NULL) {
if ((pwd->pw_uid >= user_id) && (pwd->pw_uid <= uid_max)) {
user_id = pwd->pw_uid + 1;
}
}
}
endpwent ();
+ pw_rewind ();
+ while ((pwd = pw_next ()) != NULL) {
+ if ((pwd->pw_uid >= user_id) && (pwd->pw_uid <= uid_max)) {
+ user_id = pwd->pw_uid + 1;
+ }
+ /* create index of used UIDs */
+ if (pwd->pw_uid <= uid_max) {
+ used_uids[pwd->pw_uid] = 1;
+ }
+ }
/*
* If a user with UID equal to UID_MAX exists, the above algorithm