From: Patrick Donnelly Date: Wed, 11 Nov 2020 19:37:09 +0000 (-0800) Subject: client: check rdonly file handle on truncate X-Git-Tag: v14.2.17~27^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F39129%2Fhead;p=ceph.git client: check rdonly file handle on truncate Fixes: https://tracker.ceph.com/issues/48202 Signed-off-by: Patrick Donnelly (cherry picked from commit 3bb209772eada4ba5010be521f7ecaae567598d0) --- diff --git a/src/client/Client.cc b/src/client/Client.cc index 6d23a73eee183..cb515836ed6af 100755 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -9813,6 +9813,8 @@ int Client::ftruncate(int fd, loff_t length, const UserPerm& perms) if (f->flags & O_PATH) return -EBADF; #endif + if ((f->mode & CEPH_FILE_MODE_WR) == 0) + return -EBADF; struct stat attr; attr.st_size = length; return _setattr(f->inode, &attr, CEPH_SETATTR_SIZE, perms);