From c3b764cad74114f77e8c4acc4c040c4b20666b5d Mon Sep 17 00:00:00 2001 From: Gaurav Date: Wed, 21 Sep 2011 17:10:23 +0530 Subject: NFS : Posix compliance fixes. Change-Id: I3687fd16bcc0ddc8a352efb9a0b410f54bec6e74 BUG: 1337 Reviewed-on: http://review.gluster.com/482 Tested-by: Gluster Build System Reviewed-by: Amar Tumballi Reviewed-by: Vijay Bellur --- rpc/rpc-lib/src/rpcsvc-auth.c | 3 ++- xlators/nfs/server/src/nfs3-helpers.c | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/rpc/rpc-lib/src/rpcsvc-auth.c b/rpc/rpc-lib/src/rpcsvc-auth.c index 7049cfc26fa..8c0038e7f29 100644 --- a/rpc/rpc-lib/src/rpcsvc-auth.c +++ b/rpc/rpc-lib/src/rpcsvc-auth.c @@ -346,7 +346,8 @@ rpcsvc_auth_unix_auxgids (rpcsvc_request_t *req, int *arrlen) if ((!req) || (!arrlen)) return NULL; - if ((req->cred.flavour != AUTH_UNIX) || + /* In case of AUTH_NULL auxgids are not used */ + if ((req->cred.flavour != AUTH_UNIX) && (req->cred.flavour != AUTH_GLUSTERFS)) { gf_log ("", GF_LOG_DEBUG, "auth type not unix or glusterfs"); return NULL; diff --git a/xlators/nfs/server/src/nfs3-helpers.c b/xlators/nfs/server/src/nfs3-helpers.c index 5cdcbecafd3..f7c3ad88026 100644 --- a/xlators/nfs/server/src/nfs3-helpers.c +++ b/xlators/nfs/server/src/nfs3-helpers.c @@ -575,13 +575,14 @@ nfs3_accessbits (int32_t accbits) uint32_t accresult = 0; if (accbits & POSIX_READ) - accresult |= (ACCESS3_READ | ACCESS3_LOOKUP); + accresult |= ACCESS3_READ; if (accbits & POSIX_WRITE) accresult |= (ACCESS3_MODIFY | ACCESS3_EXTEND); + /* lookup on directory allowed only in case of execute permission */ if (accbits & POSIX_EXEC) - accresult |= ACCESS3_EXECUTE; + accresult |= (ACCESS3_EXECUTE | ACCESS3_LOOKUP); return accresult; } @@ -591,13 +592,14 @@ nfs3_request_to_accessbits (int32_t accbits) { uint32_t acc_request = 0; - if (accbits & (ACCESS3_READ | ACCESS3_LOOKUP)) + if (accbits & ACCESS3_READ) acc_request |= POSIX_READ; if (accbits & (ACCESS3_MODIFY | ACCESS3_EXTEND)) acc_request |= POSIX_WRITE; - if (accbits & ACCESS3_EXECUTE) + /* For lookup on directory check for execute permission */ + if (accbits & (ACCESS3_EXECUTE | ACCESS3_LOOKUP)) acc_request |= POSIX_EXEC; return acc_request; -- cgit