src/winsup/cygwin ChangeLog grp.cc

Eric Blake eblake@redhat.com
Thu Feb 20 15:09:00 GMT 2014


On 02/20/2014 06:55 AM, corinna@cygwin.com wrote:
> CVSROOT:	/cvs/src
> Module name:	src
> Changes by:	corinna@sourceware.org	2014-02-20 13:55:57
> 
> Modified files:
> 	winsup/cygwin  : ChangeLog grp.cc 
> 
> Log message:
> 	* grp.cc (get_groups): Don't add gid to list if it's ILLEGAL_GID.
> 	(getgrouplist): Return number of groups, just like glibc.
> 
> Patches:
> http://sourceware.org/cgi-bin/cvsweb.cgi/src/winsup/cygwin/ChangeLog.diff?cvsroot=src&r1=1.6341&r2=1.6342
> http://sourceware.org/cgi-bin/cvsweb.cgi/src/winsup/cygwin/grp.cc.diff?cvsroot=src&r1=1.125&r2=1.126

This patch is wrong.

> @@ -626,7 +626,7 @@
>        }
>    if (cnt > *ngroups)
>      ret = -1;
> -  *ngroups = cnt;
> +  ret = *ngroups = cnt;

getgrouplist has the documented behavior of setting *ngroups to the
number of groups that would be returned, even if the user passed a
too-small *ngroups in to begin with - in that case, ret MUST be -1, but
you just blindly set it to a too-large value.  That is, ret must be <=
the initial value of *ngroups, and on output *ngroups must always be
positive even when ret is negative.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 604 bytes
Desc: OpenPGP digital signature
URL: <http://cygwin.com/pipermail/cygwin-developers/attachments/20140220/4b998475/attachment.sig>


More information about the Cygwin-developers mailing list