diff options
Diffstat (limited to 'rpc/rpc-lib/src/auth-glusterfs.c')
| -rw-r--r-- | rpc/rpc-lib/src/auth-glusterfs.c | 32 | 
1 files changed, 32 insertions, 0 deletions
diff --git a/rpc/rpc-lib/src/auth-glusterfs.c b/rpc/rpc-lib/src/auth-glusterfs.c index 9c6f8385b2c..db488434c98 100644 --- a/rpc/rpc-lib/src/auth-glusterfs.c +++ b/rpc/rpc-lib/src/auth-glusterfs.c @@ -96,6 +96,22 @@ int auth_glusterfs_authenticate (rpcsvc_request_t *req, void *priv)                  goto err;          } +	if (req->auxgidcount > SMALL_GROUP_COUNT) { +		req->auxgidlarge = GF_CALLOC(req->auxgidcount, +					     sizeof(req->auxgids[0]), +					     gf_common_mt_auxgids); +		req->auxgids = req->auxgidlarge; +	} else { +		req->auxgids = req->auxgidsmall; +	} + +	if (!req->auxgids) { +		gf_log ("auth-glusterfs", GF_LOG_WARNING, +			"cannot allocate gid list"); +		ret = RPCSVC_AUTH_REJECT; +		goto err; +	} +          for (gidcount = 0; gidcount < au.ngrps; ++gidcount)                  req->auxgids[gidcount] = au.groups[gidcount]; @@ -203,6 +219,22 @@ int auth_glusterfs_v2_authenticate (rpcsvc_request_t *req, void *priv)                  goto err;          } +	if (req->auxgidcount > SMALL_GROUP_COUNT) { +		req->auxgidlarge = GF_CALLOC(req->auxgidcount, +					     sizeof(req->auxgids[0]), +					     gf_common_mt_auxgids); +		req->auxgids = req->auxgidlarge; +	} else { +		req->auxgids = req->auxgidsmall; +	} + +	if (!req->auxgids) { +		gf_log ("auth-glusterfs-v2", GF_LOG_WARNING, +			"cannot allocate gid list"); +		ret = RPCSVC_AUTH_REJECT; +		goto err; +	} +          for (i = 0; i < req->auxgidcount; ++i)                  req->auxgids[i] = au.groups.groups_val[i];  | 
