svn commit: r201952 - projects/ngroups/sys/rpc/rpcsec_gss

Brooks Davis brooks at FreeBSD.org
Sat Jan 9 23:19:39 UTC 2010


Author: brooks
Date: Sat Jan  9 23:19:38 2010
New Revision: 201952
URL: http://svn.freebsd.org/changeset/base/201952

Log:
  Follow HEAD here and just limit the groups to 16 since this is RPC.

Modified:
  projects/ngroups/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c

Modified: projects/ngroups/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c
==============================================================================
--- projects/ngroups/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c	Sat Jan  9 23:19:01 2010	(r201951)
+++ projects/ngroups/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c	Sat Jan  9 23:19:38 2010	(r201952)
@@ -121,6 +121,9 @@ enum svc_rpc_gss_client_state {
 };
 
 #define SVC_RPC_GSS_SEQWINDOW	128
+#ifndef RPCAUTH_UNIXGIDS
+#define RPCAUTH_UNIXGIDS	16
+#endif
 
 struct svc_rpc_gss_clientid {
 	unsigned long		ci_hostid;
@@ -147,7 +150,7 @@ struct svc_rpc_gss_client {
 	int			cl_rpcflavor;	/* RPC pseudo sec flavor */
 	bool_t			cl_done_callback; /* TRUE after call */
 	void			*cl_cookie;	/* user cookie from callback */
-	gid_t			*cl_gid_storage;
+	gid_t			cl_gid_storage[RPCAUTH_UNIXGIDS];
 	gss_OID			cl_mech;	/* mechanism */
 	gss_qop_t		cl_qop;		/* quality of protection */
 	uint32_t		cl_seqlast;	/* sequence window origin */
@@ -543,7 +546,6 @@ svc_rpc_gss_create_client(void)
 
 	client = mem_alloc(sizeof(struct svc_rpc_gss_client));
 	memset(client, 0, sizeof(struct svc_rpc_gss_client));
-	client->cl_gid_storage = mem_alloc((ngroups_max + 1) * sizeof(gid_t));
 	refcount_init(&client->cl_refs, 1);
 	sx_init(&client->cl_lock, "GSS-client");
 	getcredhostid(curthread->td_ucred, &hostid);
@@ -591,8 +593,6 @@ svc_rpc_gss_destroy_client(struct svc_rp
 		crfree(client->cl_cred);
 
 	sx_destroy(&client->cl_lock);
-	mem_free(client->cl_gid_storage,
-	    (ngroups_max + 1) * sizeof(gid_t));
 	mem_free(client, sizeof(*client));
 }
 
@@ -738,7 +738,7 @@ svc_rpc_gss_build_ucred(struct svc_rpc_g
 	uc->gid = 65534;
 	uc->gidlist = client->cl_gid_storage;
 
-	numgroups = ngroups_max + 1;
+	numgroups = RPCAUTH_UNIXGIDS;
 	maj_stat = gss_pname_to_unix_cred(&min_stat, name, client->cl_mech,
 	    &uc->uid, &uc->gid, &numgroups, &uc->gidlist[0]);
 	if (GSS_ERROR(maj_stat))


More information about the svn-src-projects mailing list