From: Jashan Kamboj Date: Tue, 21 Jul 2015 17:10:00 +0000 (+0530) Subject: add setlayout, setdirlayout, setxattr check_access X-Git-Tag: v10.0.0~123^2~61 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=fb9c37940ed20b489387d0732928b6c61d80c8a2;p=ceph.git add setlayout, setdirlayout, setxattr check_access Signed-off-by: Jashan Kamboj --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index d68eceee42b7..60011f4912e0 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -3809,6 +3809,9 @@ void Server::handle_client_setlayout(MDRequestRef& mdr) if (!mds->locker->acquire_locks(mdr, rdlocks, wrlocks, xlocks)) return; + if (!check_access(mdr, cur, MAY_WRITE)) + return; + // project update inode_t *pi = cur->project_inode(); pi->layout = layout; @@ -3850,6 +3853,9 @@ void Server::handle_client_setdirlayout(MDRequestRef& mdr) if (!mds->locker->acquire_locks(mdr, rdlocks, wrlocks, xlocks)) return; + if (!check_access(mdr, cur, MAY_WRITE)) + return; + // validate layout const inode_t *old_pi = cur->get_projected_inode(); ceph_file_layout layout; @@ -4268,6 +4274,9 @@ void Server::handle_client_setxattr(MDRequestRef& mdr) if (!mds->locker->acquire_locks(mdr, rdlocks, wrlocks, xlocks)) return; + if (!check_access(mdr, cur, MAY_WRITE)) + return; + map *pxattrs = cur->get_projected_xattrs(); if ((flags & CEPH_XATTR_CREATE) && pxattrs->count(name)) { dout(10) << "setxattr '" << name << "' XATTR_CREATE and EEXIST on " << *cur << dendl;