From c04c52036f7757b15ea89f0a6bfe6f24f34cd41d Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Wed, 3 Aug 2016 15:05:03 -0700 Subject: [PATCH] client: push UserGroups into _posix_acl_permission(), instead of passing it Signed-off-by: Greg Farnum --- src/client/Client.cc | 12 ++++++------ src/client/Client.h | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index dc05c98426b..31b4e0cbff8 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -5025,11 +5025,8 @@ int Client::inode_permission(Inode *in, const UserPerm& perms, unsigned want) if (perms.uid() == 0) return 0; - RequestUserGroups groups(perms.uid(), perms.gid()); - init_groups(&groups); - if (perms.uid() != in->uid && (in->mode & S_IRWXG)) { - int ret = _posix_acl_permission(in, perms.uid(), groups, want); + int ret = _posix_acl_permission(in, perms, want); if (ret != -EAGAIN) return ret; } @@ -12361,12 +12358,15 @@ int Client::check_pool_perm(Inode *in, int need) return 0; } -int Client::_posix_acl_permission(Inode *in, uid_t uid, UserGroups& groups, unsigned want) +int Client::_posix_acl_permission(Inode *in, const UserPerm& perms, unsigned want) { if (acl_type == POSIX_ACL) { if (in->xattrs.count(ACL_EA_ACCESS)) { const bufferptr& access_acl = in->xattrs[ACL_EA_ACCESS]; - return posix_acl_permits(access_acl, in->uid, in->gid, uid, groups, want); + RequestUserGroups groups(perms.uid(), perms.gid()); + init_groups(&groups); + + return posix_acl_permits(access_acl, in->uid, in->gid, perms.uid(), groups, want); } } return -EAGAIN; diff --git a/src/client/Client.h b/src/client/Client.h index 304160e6eb2..6b4ea038587 100644 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -923,7 +923,7 @@ private: int _posix_acl_create(Inode *dir, mode_t *mode, bufferlist& xattrs_bl, const UserPerm& perms); int _posix_acl_chmod(Inode *in, mode_t mode, const UserPerm& perms); - int _posix_acl_permission(Inode *in, uid_t uid, UserGroups& groups, unsigned want); + int _posix_acl_permission(Inode *in, const UserPerm& perms, unsigned want); mds_rank_t _get_random_up_mds() const; -- 2.47.3