Date: Sat, 19 Jan 2002 22:54:55 +0000 From: Mark Murray <mark@grondar.za> To: Robert Watson <rwatson@freebsd.org> Cc: audit@freebsd.org Subject: Re: Fixes for gid_t usage in libc Message-ID: <200201192254.g0JMstt24818@grimreaper.grondar.org> In-Reply-To: <Pine.NEB.3.96L.1020119171955.32726O-100000@fledge.watson.org> ; from Robert Watson <rwatson@freebsd.org> "Sat, 19 Jan 2002 17:20:58 EST." References: <Pine.NEB.3.96L.1020119171955.32726O-100000@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
> It's worth pointing out that there's a PR open on the uid_t/gid_t problem > in the System V IPC interfaces; however, unlike in this situation, that > case has a binary compatibility problem since the interfaces currently use > 16-bit types :-(. We'll need to hack in binary compatibility for that, > and also handle the linuxlator properly. However, these changes look > generally good to me -- does this bring us closer or further from any > standards compliance? I have no standards documents to check this against, so I have no idea. :-( I'm (slowly) doing a grep-a-thon looking for old (int) usage. M > Robert N M Watson FreeBSD Core Team, TrustedBSD Project > robert@fledge.watson.org NAI Labs, Safeport Network Services > > On Thu, 17 Jan 2002, Mark Murray wrote: > > > Hi > > > > Reviews please? > > > > This fixes some places where groups are handled in integers > > rather than gid_t's. > > > > I've been running it for more than a month. > > > > M > > > > Index: include/grp.h > > =================================================================== > > RCS file: /home/ncvs/src/include/grp.h,v > > retrieving revision 1.3 > > diff -u -d -r1.3 grp.h > > --- include/grp.h 7 May 1997 19:59:59 -0000 1.3 > > +++ include/grp.h 7 Dec 2001 20:48:47 -0000 > > @@ -48,7 +48,7 @@ > > struct group { > > char *gr_name; /* group name */ > > char *gr_passwd; /* group password */ > > - int gr_gid; /* group id */ > > + gid_t gr_gid; /* group id */ > > char **gr_mem; /* group members */ > > }; > > > > Index: include/unistd.h > > =================================================================== > > RCS file: /home/ncvs/src/include/unistd.h,v > > retrieving revision 1.46 > > diff -u -d -r1.46 unistd.h > > --- include/unistd.h 22 Dec 2001 05:18:37 -0000 1.46 > > +++ include/unistd.h 22 Dec 2001 14:23:04 -0000 > > @@ -140,7 +140,7 @@ > > #endif > > int getdomainname __P((char *, int)); > > int getdtablesize __P((void)); > > -int getgrouplist __P((const char *, int, int *, int *)); > > +int getgrouplist __P((const char *, gid_t, gid_t *, int *)); > > long gethostid __P((void)); > > int gethostname __P((char *, int)); > > int getlogin_r __P((char *, int)); > > @@ -154,7 +154,7 @@ > > int getsid __P((pid_t _pid)); > > char *getusershell __P((void)); > > char *getwd __P((char *)); /* obsoleted by getcwd() */ > > -int initgroups __P((const char *, int)); > > +int initgroups __P((const char *, gid_t)); > > int iruserok __P((unsigned long, int, const char *, const char *)); > > int iruserok_sa __P((const void *, int, int, const char *, const char *)); > > int issetugid __P((void)); > > Index: lib/libc/gen/getgrent.3 > > =================================================================== > > RCS file: /home/ncvs/src/lib/libc/gen/getgrent.3,v > > retrieving revision 1.17 > > diff -u -d -r1.17 getgrent.3 > > --- lib/libc/gen/getgrent.3 14 Jan 2002 16:59:00 -0000 1.17 > > +++ lib/libc/gen/getgrent.3 15 Jan 2002 18:55:26 -0000 > > @@ -78,7 +78,7 @@ > > struct group { > > char *gr_name; /* group name */ > > char *gr_passwd; /* group password */ > > - int gr_gid; /* group id */ > > + gid_t gr_gid; /* group id */ > > char **gr_mem; /* group members */ > > }; > > .Ed > > Index: lib/libc/gen/getgrouplist.3 > > =================================================================== > > RCS file: /home/ncvs/src/lib/libc/gen/getgrouplist.3,v > > retrieving revision 1.7 > > diff -u -d -r1.7 getgrouplist.3 > > --- lib/libc/gen/getgrouplist.3 1 Oct 2001 16:08:51 -0000 1.7 > > +++ lib/libc/gen/getgrouplist.3 14 Dec 2001 15:21:22 -0000 > > @@ -43,7 +43,7 @@ > > .Sh SYNOPSIS > > .In unistd.h > > .Ft int > > -.Fn getgrouplist "const char *name" "int basegid" "int *groups" "int *ngroups" > > +.Fn getgrouplist "const char *name" "gid_t basegid" "gid_t *groups" "int *ngroups" > > .Sh DESCRIPTION > > The > > .Fn getgrouplist > > @@ -56,7 +56,7 @@ > > Typically this value is given as > > the group number from the password file. > > .Pp > > -The resulting group list is returned in the integer array pointed to by > > +The resulting group list is returned in the array pointed to by > > .Fa groups . > > The caller specifies the size of the > > .Fa groups > > Index: lib/libc/gen/getgrouplist.c > > =================================================================== > > RCS file: /home/ncvs/src/lib/libc/gen/getgrouplist.c,v > > retrieving revision 1.7 > > diff -u -d -r1.7 getgrouplist.c > > --- lib/libc/gen/getgrouplist.c 12 Mar 1997 14:54:22 -0000 1.7 > > +++ lib/libc/gen/getgrouplist.c 14 Dec 2001 15:29:19 -0000 > > @@ -31,9 +31,12 @@ > > * SUCH DAMAGE. > > */ > > > > +#include <sys/cdefs.h> > > +__FBSDID("$FreeBSD$"); > > + > > #if defined(LIBC_SCCS) && !defined(lint) > > static char sccsid[] = "@(#)getgrouplist.c 8.2 (Berkeley) 12/8/94"; > > -#endif /* LIBC_SCCS and not lint */ > > +#endif > > > > /* > > * get credential > > @@ -45,12 +48,12 @@ > > int > > getgrouplist(uname, agroup, groups, grpcnt) > > const char *uname; > > - int agroup; > > - register int *groups; > > + gid_t agroup; > > + gid_t *groups; > > int *grpcnt; > > { > > - register struct group *grp; > > - register int i, ngroups; > > + struct group *grp; > > + int i, ngroups; > > int ret, maxgroups; > > > > ret = 0; > > Index: lib/libc/gen/initgroups.3 > > =================================================================== > > RCS file: /home/ncvs/src/lib/libc/gen/initgroups.3,v > > retrieving revision 1.11 > > diff -u -d -r1.11 initgroups.3 > > --- lib/libc/gen/initgroups.3 28 Nov 2001 10:55:02 -0000 1.11 > > +++ lib/libc/gen/initgroups.3 14 Dec 2001 15:18:14 -0000 > > @@ -43,7 +43,7 @@ > > .Sh SYNOPSIS > > .In unistd.h > > .Ft int > > -.Fn initgroups "const char *name" "int basegid" > > +.Fn initgroups "const char *name" "gid_t basegid" > > .Sh DESCRIPTION > > The > > .Fn initgroups > > Index: lib/libc/gen/initgroups.c > > =================================================================== > > RCS file: /home/ncvs/src/lib/libc/gen/initgroups.c,v > > retrieving revision 1.5 > > diff -u -d -r1.5 initgroups.c > > --- lib/libc/gen/initgroups.c 28 Nov 2001 10:55:02 -0000 1.5 > > +++ lib/libc/gen/initgroups.c 14 Dec 2001 15:30:10 -0000 > > @@ -31,14 +31,12 @@ > > * SUCH DAMAGE. > > */ > > > > +#include <sys/cdefs.h> > > +__FBSDID("$FreeBSD$"); > > + > > #if defined(LIBC_SCCS) && !defined(lint) > > -#if 0 > > static char sccsid[] = "@(#)initgroups.c 8.1 (Berkeley) 6/4/93"; > > -#else > > -static const char rcsid[] = > > - "$FreeBSD: src/lib/libc/gen/initgroups.c,v 1.5 2001/11/28 10:55:02 tobez Exp $"; > > #endif > > -#endif /* LIBC_SCCS and not lint */ > > > > #include <sys/param.h> > > > > @@ -51,7 +49,7 @@ > > int > > initgroups(uname, agroup) > > const char *uname; > > - int agroup; > > + gid_t agroup; > > { > > int groups[NGROUPS], ngroups; > > > > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > > with "unsubscribe freebsd-audit" in the body of the message > > > -- o Mark Murray \_ FreeBSD Services Limited O.\_ Warning: this .sig is umop ap!sdn To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-audit" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200201192254.g0JMstt24818>