aboutsummaryrefslogtreecommitdiffstats
path: root/grp
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2005-03-29 23:40:49 +0000
committerRoland McGrath <roland@gnu.org>2005-03-29 23:40:49 +0000
commit2e6a02d832158ac81d1ecceff1834455633d58bd (patch)
tree3602a3ce9ab476cb4f57b3b8fd35d6ae86097057 /grp
parent. (diff)
downloadglibc-2e6a02d832158ac81d1ecceff1834455633d58bd.tar.xz
glibc-2e6a02d832158ac81d1ecceff1834455633d58bd.zip
2005-03-29 Thorsten Kukuk <kukuk@suse.de>
[BZ #661] * grp/initgroups.c (internal_getgrouplist): Check if we have enough space before adding the primary group to the list.
Diffstat (limited to 'grp')
-rw-r--r--grp/initgroups.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/grp/initgroups.c b/grp/initgroups.c
index d052cf48f7..b887a973ff 100644
--- a/grp/initgroups.c
+++ b/grp/initgroups.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989,91,93,1996-2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1989,91,93,1996-2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -73,7 +73,9 @@ internal_getgrouplist (const char *user, gid_t group, long int *size,
/* Start is one, because we have the first group as parameter. */
long int start = 1;
- (*groupsp)[0] = group;
+ /* Never store more than the starting *SIZE number of elements. */
+ if (*size > 0)
+ (*groupsp)[0] = group;
if (__nss_group_database != NULL)
{