Skip site navigation (1)Skip section navigation (2)
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>