From: Ulrich Drepper Date: Sat, 19 Jun 2010 18:38:04 +0000 (-0700) Subject: Correct checking loop in group_member. X-Git-Tag: fedora/glibc-2.12.90-4~1^2~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ac2b484c02b01307ab6bbe5d45ddbf16d64edf8c;p=thirdparty%2Fglibc.git Correct checking loop in group_member. --- diff --git a/ChangeLog b/ChangeLog index f50f11dacb4..0741fc198d4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2010-06-19 Ulrich Drepper + [BZ #11701] + * posix/group_member.c (__group_member): Correct checking loop. + * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Handle OOM in getpwuid_r correctly. Return error number when the caller should return, otherwise -1. diff --git a/NEWS b/NEWS index 4d869d2c810..aafc4b0556d 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -GNU C Library NEWS -- history of user-visible changes. 2010-5-19 +GNU C Library NEWS -- history of user-visible changes. 2010-6-19 Copyright (C) 1992-2009, 2010 Free Software Foundation, Inc. See the end for copying conditions. @@ -7,7 +7,11 @@ using `glibc' in the "product" field. Version 2.13 -* POWER7 optimizations: memset +* The following bugs are resolved with this release: + + 11640, 11701 + +* POWER7 optimizations: memset, memcmp, strncmp Version 2.12 diff --git a/posix/group_member.c b/posix/group_member.c index 7bd9c46ba22..892755e95a7 100644 --- a/posix/group_member.c +++ b/posix/group_member.c @@ -1,5 +1,5 @@ /* `group_member' -- test if process is in a given group. - Copyright (C) 1995, 1997, 2002 Free Software Foundation, Inc. + Copyright (C) 1995, 1997, 2002, 2010 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 @@ -39,10 +39,11 @@ __group_member (gid) groups = __alloca (size * sizeof *groups); n = __getgroups (size, groups); size *= 2; - } while (n == size / 2); + } + while (n == size / 2); - while (n >= 0) - if (groups[n--] == gid) + while (n-- > 0) + if (groups[n] == gid) return 1; return 0;