summaryrefslogtreecommitdiffstats
path: root/utils
diff options
context:
space:
mode:
authorneilbrown <neilbrown>2005-12-19 23:49:30 +0000
committerneilbrown <neilbrown>2005-12-19 23:49:30 +0000
commitff0c801ad905b863b8c175ccee460791a78b875d (patch)
treeaa2388d776f1fa135da4193d83f9c5e07094c2fa /utils
parent870762b34e5209a4f356fdac2d8b42edf574f833 (diff)
downloadnfs-utils-ff0c801ad905b863b8c175ccee460791a78b875d.tar.gz
nfs-utils-ff0c801ad905b863b8c175ccee460791a78b875d.tar.xz
nfs-utils-ff0c801ad905b863b8c175ccee460791a78b875d.zip
utils/gssd/gssd_proc.c(create_auth_rpc_client): Use service
portion of clp->servicename rather than hard-coding "nfs".
Diffstat (limited to 'utils')
-rw-r--r--utils/gssd/gssd_proc.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/utils/gssd/gssd_proc.c b/utils/gssd/gssd_proc.c
index 78919b8..f2907c9 100644
--- a/utils/gssd/gssd_proc.c
+++ b/utils/gssd/gssd_proc.c
@@ -436,6 +436,8 @@ int create_auth_rpc_client(struct clnt_info *clp,
int sockp = RPC_ANYSOCK;
int sendsz = 32768, recvsz = 32768;
struct addrinfo ai_hints, *a = NULL;
+ char service[64];
+ char *at_sign;
sec.qop = GSS_C_QOP_DEFAULT;
sec.svc = RPCSEC_GSS_SVC_NONE;
@@ -505,8 +507,21 @@ int create_auth_rpc_client(struct clnt_info *clp,
goto out_fail;
}
- errcode = getaddrinfo(clp->servername, "nfs",
- &ai_hints, &a);
+ /* extract the service name from clp->servicename */
+ if ((at_sign = strchr(clp->servicename, '@')) == NULL) {
+ printerr(0, "WARNING: servicename (%s) not formatted as "
+ "expected with service@host", clp->servicename);
+ goto out_fail;
+ }
+ if ((at_sign - clp->servicename) >= sizeof(service)) {
+ printerr(0, "WARNING: service portion of servicename (%s) "
+ "is too long!", clp->servicename);
+ goto out_fail;
+ }
+ strncpy(service, clp->servicename, at_sign - clp->servicename);
+ service[at_sign - clp->servicename] = '\0';
+
+ errcode = getaddrinfo(clp->servername, service, &ai_hints, &a);
if (errcode) {
printerr(0, "WARNING: Error from getaddrinfo for server "
"'%s': %s", clp->servername, gai_strerror(errcode));