]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
chroot: expand heap a bit less aggressively
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 7 Nov 2024 00:18:54 +0000 (16:18 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 9 Nov 2024 07:41:18 +0000 (23:41 -0800)
* src/chroot.c (parse_additional_groups, main):
Prefer idx_t to size_t for sizes.
(parse_additional_groups): Use xpalloc instead of x2nrealloc.

src/chroot.c

index 1797a16d401aae6a2aa35b4d1523a0d33aba9a88..f7354ccdbfd3105cb08d2a21d099354b8ae4fdfc 100644 (file)
@@ -93,11 +93,11 @@ setgroups (size_t size, MAYBE_UNUSED gid_t const *list)
 
 static int
 parse_additional_groups (char const *groups, GETGROUPS_T **pgids,
-                         size_t *pn_gids, bool show_errors)
+                         idx_t *pn_gids, bool show_errors)
 {
   GETGROUPS_T *gids = nullptr;
-  size_t n_gids_allocated = 0;
-  size_t n_gids = 0;
+  idx_t n_gids_allocated = 0;
+  idx_t n_gids = 0;
   char *buffer = xstrdup (groups);
   char const *tmp;
   int ret = 0;
@@ -143,7 +143,7 @@ parse_additional_groups (char const *groups, GETGROUPS_T **pgids,
         }
 
       if (n_gids == n_gids_allocated)
-        gids = X2NREALLOC (gids, &n_gids_allocated);
+        gids = xpalloc (gids, &n_gids_allocated, 1, -1, sizeof *gids);
       gids[n_gids++] = value;
     }
 
@@ -230,7 +230,7 @@ main (int argc, char **argv)
   uid_t uid = -1;
   gid_t gid = -1;
   GETGROUPS_T *out_gids = nullptr;
-  size_t n_gids = 0;
+  idx_t n_gids = 0;
 
   initialize_main (&argc, &argv);
   set_program_name (argv[0]);
@@ -251,7 +251,7 @@ main (int argc, char **argv)
             /* Treat 'user:' just like 'user'
                as we lookup the primary group by default
                (and support doing so for UIDs as well as names.  */
-            size_t userlen = strlen (userspec);
+            idx_t userlen = strlen (userspec);
             if (userlen && userspec[userlen - 1] == ':')
               userspec[userlen - 1] = '\0';
             break;