* libmisc/find_new_sub_gids.c: Remove dead code.
find_new_sub_gids() is always called with *range_count set to 0.
It's more difficult to keep the subordinate GIDs and UIDs
synchronized, than for the user's UID/GId because the count of
subordinate IDs may differ.
* libmisc/find_new_sub_uids.c: Likewise.
* lib/subordinateio.h, lib/subordinateio.c: Remove APIs that are
no more needed: is_sub_uid_range_free(), is_sub_gid_range_free(),
is_range_free().
+2013-08-15 Nicolas François <nicolas.francois@centraliens.net>
+
+ * libmisc/find_new_sub_gids.c: Remove dead code.
+ find_new_sub_gids() is always called with *range_count set to 0.
+ It's more difficult to keep the subordinate GIDs and UIDs
+ synchronized, than for the user's UID/GId because the count of
+ subordinate IDs may differ.
+ * libmisc/find_new_sub_uids.c: Likewise.
+ * lib/subordinateio.h, lib/subordinateio.c: Remove APIs that are
+ no more needed: is_sub_uid_range_free(), is_sub_gid_range_free(),
+ is_range_free().
+
2013-08-13 Nicolas François <nicolas.francois@centraliens.net>
* configure.in: Check if sizeof uid_t and gid_t is larger than 32
commonio_next (db);
}
-static bool is_range_free(struct commonio_db *db, unsigned long start,
- unsigned long count)
-{
- const struct subordinate_range *range;
- unsigned long end = start + count - 1;
-
- commonio_rewind(db);
- while ((range = commonio_next(db)) != NULL) {
- unsigned long first = range->start;
- unsigned long last = first + range->count - 1;
-
- if ((end >= first) && (start <= last))
- return false;
- }
- return true;
-}
-
static const bool range_exists(struct commonio_db *db, const char *owner)
{
const struct subordinate_range *range;
return commonio_open (&subordinate_uid_db, mode);
}
-bool is_sub_uid_range_free(uid_t start, unsigned long count)
-{
- return is_range_free (&subordinate_uid_db, start, count);
-}
-
bool sub_uid_assigned(const char *owner)
{
return range_exists (&subordinate_uid_db, owner);
return commonio_open (&subordinate_gid_db, mode);
}
-bool is_sub_gid_range_free(gid_t start, unsigned long count)
-{
- return is_range_free (&subordinate_gid_db, start, count);
-}
-
bool have_sub_gids(const char *owner, gid_t start, unsigned long count)
{
return have_range(&subordinate_gid_db, owner, start, count);
#include <sys/types.h>
extern int sub_uid_close(void);
-extern bool is_sub_uid_range_free(uid_t start, unsigned long count);
extern bool have_sub_uids(const char *owner, uid_t start, unsigned long count);
extern bool sub_uid_file_present (void);
extern bool sub_uid_assigned(const char *owner);
extern uid_t sub_uid_find_free_range(uid_t min, uid_t max, unsigned long count);
extern int sub_gid_close(void);
-extern bool is_sub_gid_range_free(gid_t start, unsigned long count);
extern bool have_sub_gids(const char *owner, gid_t start, unsigned long count);
extern bool sub_gid_file_present (void);
extern bool sub_gid_assigned(const char *owner);
return -1;
}
- /* Is there a preferred range that works? */
- if ((*range_count != 0) &&
- (*range_start >= min) &&
- (((*range_start) + (*range_count) - 1) <= max) &&
- is_sub_gid_range_free(*range_start, *range_count)) {
- return 0;
- }
-
start = sub_gid_find_free_range(min, max, count);
if (start == (gid_t)-1) {
fprintf (stderr,
return -1;
}
- /* Is there a preferred range that works? */
- if ((*range_count != 0) &&
- (*range_start >= min) &&
- (((*range_start) + (*range_count) - 1) <= max) &&
- is_sub_uid_range_free(*range_start, *range_count)) {
- return 0;
- }
-
start = sub_uid_find_free_range(min, max, count);
if (start == (uid_t)-1) {
fprintf (stderr,