Re: Bug#699593: login: wrong egid
Hi,
I don't think GNU/kFreeBSD's behaviour is wrong; but we may need to fix
some applications that suffer problems, including bash.
Maybe this is related to the problem (a wild guess really - the first
thing that jumped out at me as being wrong). There are checks for
__FreeBSD__ relating to euid/egid, and they may also need to check for
__FreeBSD_kernel__
bash-4.2/lib/sh/eaccess.c:
> int
> sh_eaccess (path, mode)
> char *path;
> int mode;
> {
> int ret;
>
> if (path_is_devfd (path))
> return (sh_stataccess (path, mode));
>
> #if defined (HAVE_FACCESSAT) && defined (AT_EACCESS)
> return (faccessat (AT_FDCWD, path, mode, AT_EACCESS));
> #elif defined (HAVE_EACCESS) /* FreeBSD */
> ret = eaccess (path, mode); /* XXX -- not always correct for X_OK */
> # if defined (__FreeBSD__)
> if (ret == 0 && current_user.euid == 0 && mode == X_OK)
> return (sh_stataccess (path, mode));
> # endif
> return ret;
and:
> if (current_user.uid == current_user.euid && current_user.gid == current_user.egid)
> {
> ret = access (path, mode);
> #if defined (__FreeBSD__) || defined (SOLARIS)
> if (ret == 0 && current_user.euid == 0 && mode == X_OK)
> return (sh_stataccess (path, mode));
> #endif
> return ret;
Regards,
--
Steven Chamberlain
steven@pyro.eu.org
Reply to: