From: Roland McGrath Date: Tue, 29 Mar 2005 23:40:49 +0000 (+0000) Subject: 2005-03-29 Thorsten Kukuk X-Git-Tag: cvs/glibc-2_3_5~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2e6a02d832158ac81d1ecceff1834455633d58bd;p=thirdparty%2Fglibc.git 2005-03-29 Thorsten Kukuk [BZ #661] * grp/initgroups.c (internal_getgrouplist): Check if we have enough space before adding the primary group to the list. --- diff --git a/grp/initgroups.c b/grp/initgroups.c index d052cf48f7b..b887a973ff6 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) {