summaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/mach/hurd/getgroups.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sysdeps/mach/hurd/getgroups.c b/sysdeps/mach/hurd/getgroups.c
index 157a981740..35b219ef66 100644
--- a/sysdeps/mach/hurd/getgroups.c
+++ b/sysdeps/mach/hurd/getgroups.c
@@ -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