[sudo-workers] porting sudo to minix 3

Debjit Biswas debjitbis08 at gmail.com
Sun May 24 02:33:47 EDT 2009


On Fri, May 22, 2009 at 4:09 PM, Todd C. Miller
<Todd.Miller at courtesan.com> wrote:
> In message <a55e33110905220213y30604973s8309a9e2e611870f at mail.gmail.com>
>        so spake Debjit Biswas (debjitbis08):
>
>> i've trying to port sudo-1.7.0 to MINIX 3. the problem is MINIX does
>> not implement supplementary groups.
>> Although i've been able to compile sudo successfully, running sudo
>> fails with the message
>>
>> internal error, tried to emalloc2(0)
>>
>> This is due to the fact that the getgroups function always returns 0.
>> Is there any way to detect this during configuration ?
>
> Sudo should probably just deal with getgroups returning 0.
> The following diff, relative to sudo 1.7.x should do the trick.
>
>  - todd
>
> Index: set_perms.c
> ===================================================================
> RCS file: /home/cvs/courtesan/sudo/set_perms.c,v
> retrieving revision 1.46
> diff -u -r1.46 set_perms.c
> --- set_perms.c 18 May 2009 10:33:33 -0000      1.46
> +++ set_perms.c 22 May 2009 10:37:00 -0000
> @@ -490,7 +490,9 @@
>  runas_setgroups()
>  {
>     static int ngroups = -1;
> +#ifdef HAVE_GETGROUPS
>     static GETGROUPS_T *groups;
> +#endif
>     struct passwd *pw;
>
>     if (def_preserve_groups)
> @@ -503,14 +505,16 @@
>        pw = runas_pw ? runas_pw : sudo_user.pw;
>        if (initgroups(pw->pw_name, pw->pw_gid) < 0)
>            log_error(USE_ERRNO|MSG_ONLY, "can't set runas group vector");
> -       if ((ngroups = getgroups(0, NULL)) < 0)
> -           log_error(USE_ERRNO|MSG_ONLY, "can't get runas ngroups");
> -       groups = emalloc2(ngroups, sizeof(GETGROUPS_T));
> -       if (getgroups(ngroups, groups) < 0)
> -           log_error(USE_ERRNO|MSG_ONLY, "can't get runas group vector");
> +#ifdef HAVE_GETGROUPS
> +       if ((ngroups = getgroups(0, NULL)) > 0) {
> +           groups = emalloc2(ngroups, sizeof(GETGROUPS_T));
> +           if (getgroups(ngroups, groups) < 0)
> +               log_error(USE_ERRNO|MSG_ONLY, "can't get runas group vector");
> +       }
>     } else {
>        if (setgroups(ngroups, groups) < 0)
>            log_error(USE_ERRNO|MSG_ONLY, "can't set runas group vector");
> +#endif /* HAVE_GETGROUPS */
>     }
>  }
>
>

Thanks for the tip, it worked perfectly.

To get sudo to compile though the header termios.h had to be added to lbuf.c.
Also, since minix does not define IFF_LOOPBACK anywhere had to compile with
--without-interfaces.

Well thanks again.



More information about the sudo-workers mailing list