]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
client: check rdonly file handle on truncate 38031/head
authorPatrick Donnelly <pdonnell@redhat.com>
Wed, 11 Nov 2020 19:37:09 +0000 (11:37 -0800)
committerPatrick Donnelly <pdonnell@redhat.com>
Wed, 11 Nov 2020 21:35:21 +0000 (13:35 -0800)
Fixes: https://tracker.ceph.com/issues/48202
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
src/client/Client.cc

index 35dbd94058cb10837e6314cf9712338dfae37951..12cd6c741fb8e061a2bd64c8323216cf85d9c647 100644 (file)
@@ -10134,6 +10134,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);