mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-10 23:30:07 +00:00
Hurd: compliance fixes for getgroups
Fail with EINVAL when the requested number of groups is negative, or when it is positive but less than the actual number of groups.
This commit is contained in:
parent
898c7aaba5
commit
0ced335ac0
@ -10,6 +10,9 @@
|
||||
* sysdeps/mach/hurd/lremovexattr.c: New file, copied from removexattr.c
|
||||
with O_NOLINK passed to __file_name_lookup.
|
||||
|
||||
* sysdeps/mach/hurd/getgroups.c: Return -1 and set EINVAL for
|
||||
negative N or less than NGIDS.
|
||||
|
||||
2012-07-20 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* elf/Makefile (check-data): Remove.
|
||||
|
@ -30,6 +30,9 @@ __getgroups (n, gidset)
|
||||
int ngids;
|
||||
void *crit;
|
||||
|
||||
if (n < 0)
|
||||
return __hurd_fail (EINVAL);
|
||||
|
||||
crit = _hurd_critical_section_lock ();
|
||||
__mutex_lock (&_hurd_id.lock);
|
||||
|
||||
@ -53,7 +56,7 @@ __getgroups (n, gidset)
|
||||
/* Now that the lock is released, we can safely copy the
|
||||
group set into the user's array, which might fault. */
|
||||
if (ngids > n)
|
||||
ngids = n;
|
||||
return __hurd_fail (EINVAL);
|
||||
memcpy (gidset, gids, ngids * sizeof (gid_t));
|
||||
}
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user