* libmisc/find_new_gid.c, libmisc/find_new_uid.c: Detect some
authornekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Sun, 21 Mar 2010 01:20:50 +0000 (01:20 +0000)
committernekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Sun, 21 Mar 2010 01:20:50 +0000 (01:20 +0000)
misconfigurations of UID_MIN, UID_MAX, SYS_UID_MIN, SYS_UID_MAX (and
the GID equivalents)

ChangeLog
libmisc/find_new_gid.c
libmisc/find_new_uid.c

index 5a1bed909e4a7d1f660778262a6700cab4ac83f5..660fc56cd6317e43a4cfa9c73515aec2cac4ae32 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-03-21  Nicolas François  <nicolas.francois@centraliens.net>
+
+       * libmisc/find_new_gid.c, libmisc/find_new_uid.c: Detect some
+       misconfigurations of UID_MIN, UID_MAX, SYS_UID_MIN, SYS_UID_MAX (and
+       the GID equivalents)
+
 2010-03-20  Nicolas François  <nicolas.francois@centraliens.net>
 
        * NEWS, configure.in: Next version will be 4.1.5.
index 19bc19661333356026d1a2dd1bda1ee83121c35c..1c08b9b40a3305dc41b123ed4b55ba1be29e39cc 100644 (file)
@@ -60,10 +60,20 @@ int find_new_gid (bool sys_group,
        if (!sys_group) {
                gid_min = (gid_t) getdef_ulong ("GID_MIN", 1000UL);
                gid_max = (gid_t) getdef_ulong ("GID_MAX", 60000UL);
+               if (gid_max < gid_min) {
+                       (void) fprintf (stderr,
+                                       _("%s: Invalid configuration: GID_MIN (%lu), GID_MAX (%lu)\n"),
+                                       Prog, (unsigned long) gid_min, (unsigned long) gid_max);
+               }
        } else {
                gid_min = (gid_t) getdef_ulong ("SYS_GID_MIN", 101UL);
                gid_max = (gid_t) getdef_ulong ("GID_MIN", 1000UL) - 1;
                gid_max = (gid_t) getdef_ulong ("SYS_GID_MAX", (unsigned long) gid_max);
+               if (gid_max < gid_min) {
+                       (void) fprintf (stderr,
+                                       _("%s: Invalid configuration: SYS_GID_MIN (%lu), GID_MIN (%lu), SYS_GID_MAX (%lu)\n"),
+                                       Prog, (unsigned long) gid_min, getdef_ulong ("GID_MIN", 1000UL), (unsigned long) gid_max);
+               }
        }
        used_gids = alloca (sizeof (bool) * (gid_max +1));
        memset (used_gids, false, sizeof (bool) * (gid_max + 1));
index b1a188afd94bff42e8a07d4cf6189d1971b971af..139fe5f821eca8c9d1781bb71d33f70315d8ab18 100644 (file)
@@ -60,10 +60,20 @@ int find_new_uid (bool sys_user,
        if (!sys_user) {
                uid_min = (uid_t) getdef_ulong ("UID_MIN", 1000UL);
                uid_max = (uid_t) getdef_ulong ("UID_MAX", 60000UL);
+               if (uid_max < uid_min) {
+                       (void) fprintf (stderr,
+                                       _("%s: Invalid configuration: UID_MIN (%lu), UID_MAX (%lu)\n"),
+                                       Prog, (unsigned long) uid_min, (unsigned long) uid_max);
+               }
        } else {
                uid_min = (uid_t) getdef_ulong ("SYS_UID_MIN", 101UL);
                uid_max = (uid_t) getdef_ulong ("UID_MIN", 1000UL) - 1;
                uid_max = (uid_t) getdef_ulong ("SYS_UID_MAX", (unsigned long) uid_max);
+               if (uid_max < uid_min) {
+                       (void) fprintf (stderr,
+                                       _("%s: Invalid configuration: SYS_UID_MIN (%lu), UID_MIN (%lu), SYS_UID_MAX (%lu)\n"),
+                                       Prog, (unsigned long) uid_min, getdef_ulong ("UID_MIN", 1000UL), (unsigned long) uid_max);
+               }
        }
        used_uids = alloca (sizeof (bool) * (uid_max +1));
        memset (used_uids, false, sizeof (bool) * (uid_max + 1));