[libvirt] [PATCHv2 2/2] util: Don't fail virGetGroupIDByName when group not found

Peter Krempa pkrempa at redhat.com
Thu Dec 6 16:02:20 UTC 2012


On 12/06/12 15:37, Christophe Fergeau wrote:
> virGetGroupIDByName is documented as returning 1 if the groupname
> cannot be found. getgrnam_r is documented as returning:
> « 0 or ENOENT or ESRCH or EBADF or EPERM or ...  The given name
> or gid was not found. »
>   and that:
> « The formulation given above under "RETURN VALUE" is from POSIX.1-2001.
> It  does  not  call  "not  found"  an error, hence does not specify what
> value errno might have in this situation.  But that makes it impossible to
> recognize errors.  One might argue that according to POSIX errno should be
> left unchanged if an entry is not found.  Experiments on various UNIX-like
> systems shows that lots of different values occur in this situation: 0,
> ENOENT, EBADF, ESRCH, EWOULDBLOCK, EPERM and probably others. »
>
> virGetGroupIDByName returns an error when the return value of getgrnam_r
> is non-0. However on my RHEL system, getgrnam_r returns ENOENT when the
> requested user cannot be found, which then causes virGetGroupID not
> to behave as documented (it returns an error instead of falling back
> to parsing the passed-in value as an gid).
>
> This commit makes virGetGroupIDByName only report an error when errno
> is set to one of the values in the posix description of getgrnam_r
> (which are the same as the ones described in the manpage on my system).
> ---
>   src/util/util.c | 15 ++++++++++++---
>   1 file changed, 12 insertions(+), 3 deletions(-)
>

ACK with same condition as in 1/2.

Peter




More information about the libvir-list mailing list