]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
client: check rdonly file handle on truncate 39129/head
authorPatrick Donnelly <pdonnell@redhat.com>
Wed, 11 Nov 2020 19:37:09 +0000 (11:37 -0800)
committerNathan Cutler <ncutler@suse.com>
Wed, 17 Feb 2021 08:47:39 +0000 (09:47 +0100)
Fixes: https://tracker.ceph.com/issues/48202
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit 3bb209772eada4ba5010be521f7ecaae567598d0)

src/client/Client.cc

index 6d23a73eee183ebee6d12615d230f3fc375ccdd2..cb515836ed6afc6d7538fe20f1371eb0bbdaf224 100755 (executable)
@@ -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);