From owner-freebsd-current Mon Nov 19 8:21:59 2001 Delivered-To: freebsd-current@freebsd.org Received: from whale.sunbay.crimea.ua (whale.sunbay.crimea.ua [212.110.138.65]) by hub.freebsd.org (Postfix) with ESMTP id 7BD2037B419; Mon, 19 Nov 2001 08:21:47 -0800 (PST) Received: (from ru@localhost) by whale.sunbay.crimea.ua (8.11.6/8.11.2) id fAJGJoa68359; Mon, 19 Nov 2001 18:19:50 +0200 (EET) (envelope-from ru) Date: Mon, 19 Nov 2001 18:19:50 +0200 From: Ruslan Ermilov To: Terry Lambert Cc: Max Khon , current@FreeBSD.ORG, tobez@FreeBSD.ORG Subject: Re: misc/15421 (was: Re: initgroups) Message-ID: <20011119181949.R32927@sunbay.com> References: <20011114021956.B10325@iclub.nsu.ru> <3BF19EA9.3FC5F040@mindspring.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3BF19EA9.3FC5F040@mindspring.com> User-Agent: Mutt/1.3.23i Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Tue, Nov 13, 2001 at 02:28:57PM -0800, Terry Lambert wrote: > Max Khon wrote: > > > > hi, there! > > > > Any objections if I will commit the following patch (see PR/15421)? > > Can setgroups return a positive number? If so, you've just changed > the semantics of the funtion; before, it used to return 0 on 0 or a > positive number. > No. setgroups() is a syscall, and as such returns either 0 or -1. > Also, is removing the _warn() really the only thing you want to > accomplish? It should probably be seperate. > I have intended to commit the below patch for almost a year now, just haven't had enough time to actually fo it. NetBSD runs with this fix since 1999. Index: initgroups.c =================================================================== RCS file: /home/ncvs/src/lib/libc/gen/initgroups.c,v retrieving revision 1.4 diff -u -p -r1.4 initgroups.c --- initgroups.c 2001/08/29 13:52:26 1.4 +++ initgroups.c 2001/11/19 16:16:11 @@ -56,12 +56,6 @@ initgroups(uname, agroup) int groups[NGROUPS], ngroups; ngroups = NGROUPS; - if (getgrouplist(uname, agroup, groups, &ngroups) < 0) - warnx("%s is in too many groups, using first %d", - uname, ngroups); - if (setgroups(ngroups, groups) < 0) { - _warn("setgroups"); - return (-1); - } - return (0); + getgrouplist(uname, agroup, groups, &ngroups); + return (setgroups(ngroups, groups); } Index: initgroups.3 =================================================================== RCS file: /home/ncvs/src/lib/libc/gen/initgroups.3,v retrieving revision 1.10 diff -u -p -r1.10 initgroups.3 --- initgroups.3 2001/10/01 16:08:51 1.10 +++ initgroups.3 2001/11/19 16:16:11 @@ -61,10 +61,14 @@ is automatically included in the groups Typically this value is given as the group number from the password file. .Sh RETURN VALUES +.Rv -std initgroups +.Sh ERRORS The .Fn initgroups -function -returns \-1 if it was not invoked by the super-user. +function may fail and set +.Va errno +for any of the errors specified for the library function +.Xr setgroups 2 . .Sh SEE ALSO .Xr setgroups 2 , .Xr getgrouplist 3 Cheers, -- Ruslan Ermilov Oracle Developer/DBA, ru@sunbay.com Sunbay Software AG, ru@FreeBSD.org FreeBSD committer, +380.652.512.251 Simferopol, Ukraine http://www.FreeBSD.org The Power To Serve http://www.oracle.com Enabling The Information Age To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message