]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: check appropriate entity permission on put_metadata
authorYehuda Sadeh <yehuda@inktank.com>
Fri, 23 May 2014 01:27:58 +0000 (18:27 -0700)
committerSage Weil <sage@inktank.com>
Wed, 25 Jun 2014 21:54:20 +0000 (14:54 -0700)
Fixes: #8428
Backport: firefly

Cannot use verify_object_permission() to test acls, as the operation
here might either be on object or on bucket.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
(cherry picked from commit 2ceb13af34bc38b418bb88d81131d770a71159bf)

src/rgw/rgw_op.cc

index 53a72ef37b7d7b1aedb5529c6d312df3a930a6b0..26f587d0f15a64a2d5bfe57faba62b0597260204 100644 (file)
@@ -1843,8 +1843,13 @@ done:
 
 int RGWPutMetadata::verify_permission()
 {
-  if (!verify_object_permission(s, RGW_PERM_WRITE))
-    return -EACCES;
+  if (s->object) {
+    if (!verify_object_permission(s, RGW_PERM_WRITE))
+      return -EACCES;
+  } else {
+    if (!verify_bucket_permission(s, RGW_PERM_WRITE))
+      return -EACCES;
+  }
 
   return 0;
 }