]> granicus.if.org Git - sudo/commitdiff
Deal with OSes where sizeof(gid_t) < sizeof(int).
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 14 Aug 2007 19:27:27 +0000 (19:27 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 14 Aug 2007 19:27:27 +0000 (19:27 +0000)
parse.c
sudo.c

diff --git a/parse.c b/parse.c
index ecdc2bef27f7f236acd442c3f660b2c5aea9a732..de77f52e18ef5d425549ec766c1bcfdf0d2d68ec 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -222,7 +222,8 @@ display_privs(v, pw)
     if (pw != sudo_user.pw) {
        (void) initgroups(pw->pw_name, pw->pw_gid);
        if ((user_ngroups = getgroups(0, NULL)) > 0) {
-           user_groups = erealloc3(user_groups, user_ngroups, sizeof(gid_t));
+           user_groups = erealloc3(user_groups, user_ngroups,
+               MAX(sizeof(gid_t), sizeof(int)));
            if (getgroups(user_ngroups, user_groups) < 0)
                log_error(USE_ERRNO|MSG_ONLY, "can't get group vector");
        } else
diff --git a/sudo.c b/sudo.c
index 2f17db4a29d326e61ee13e05ed5e3ee32fac3dca..691164ef0bdeb7e699cc3094b0d7cbdd0e47c273 100644 (file)
--- a/sudo.c
+++ b/sudo.c
@@ -616,7 +616,7 @@ init_vars(sudo_mode, envp)
 
 #ifdef HAVE_GETGROUPS
     if ((user_ngroups = getgroups(0, NULL)) > 0) {
-       user_groups = emalloc2(user_ngroups, sizeof(gid_t));
+       user_groups = emalloc2(user_ngroups, MAX(sizeof(gid_t), sizeof(int)));
        if (getgroups(user_ngroups, user_groups) < 0)
            log_error(USE_ERRNO|MSG_ONLY, "can't get group vector");
     } else