From 718a8ab91f6b9bd84da52c2029707f48e9fecaa4 Mon Sep 17 00:00:00 2001 From: Rajesh Amaravathi Date: Tue, 13 Mar 2012 13:13:11 +0530 Subject: rpc-lib/rpcsvc: nfs auth corrections in comparing ip addresses during authentication, we need to take only the ip address of the client instead of the transport endpoint (ip:port). Change-Id: If48eca37edea1d69deb150720fbaea0ea2443a00 BUG: 771845 Signed-off-by: Rajesh Amaravathi Reviewed-on: http://review.gluster.com/2929 Tested-by: Gluster Build System Reviewed-by: Amar Tumballi Reviewed-by: Vijay Bellur --- rpc/rpc-lib/src/rpcsvc.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'rpc') diff --git a/rpc/rpc-lib/src/rpcsvc.c b/rpc/rpc-lib/src/rpcsvc.c index 3592e02b..5357537f 100644 --- a/rpc/rpc-lib/src/rpcsvc.c +++ b/rpc/rpc-lib/src/rpcsvc.c @@ -2156,7 +2156,9 @@ rpcsvc_transport_peer_check_addr (dict_t *options, char *volname, int aret = RPCSVC_AUTH_DONTCARE; int rjret = RPCSVC_AUTH_REJECT; char clstr[RPCSVC_PEER_STRLEN]; + char *tmp = NULL; struct sockaddr_storage sastorage = {0,}; + struct sockaddr *sockaddr = NULL; if (!trans) return ret; @@ -2170,6 +2172,17 @@ rpcsvc_transport_peer_check_addr (dict_t *options, char *volname, goto err; } + sockaddr = (struct sockaddr *) &sastorage; + switch (sockaddr->sa_family) { + + case AF_INET: + case AF_INET6: + tmp = strrchr (clstr, ':'); + if (tmp) + *tmp = '\0'; + break; + } + aret = rpcsvc_transport_peer_check_allow (options, volname, clstr); rjret = rpcsvc_transport_peer_check_reject (options, volname, clstr); @@ -2248,8 +2261,7 @@ rpcsvc_transport_check_volume_general (dict_t *options, rpc_transport_t *trans) addrchk = rpcsvc_transport_peer_check_addr (options, NULL, trans); if (namelookup) - ret = rpcsvc_combine_gen_spec_addr_checks (addrchk, - namechk); + ret = rpcsvc_combine_gen_spec_addr_checks (addrchk, namechk); else ret = addrchk; -- cgit