]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: don't override subuser perm mask if perm not specified
authorYehuda Sadeh <yehuda@inktank.com>
Mon, 25 Jun 2012 16:47:37 +0000 (09:47 -0700)
committerSage Weil <sage@inktank.com>
Thu, 12 Jul 2012 16:42:17 +0000 (09:42 -0700)
Bug #2650. We were overriding subuser perm mask whenever subuser
was modified, even if perm mask was not passed.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
src/rgw/rgw_admin.cc

index 244ce486a698126c35e1ff04526d8a3e8ffce8ff..9984427de3add3b4ff95ee55838fb9a7594e070a 100644 (file)
@@ -564,6 +564,7 @@ int main(int argc, char **argv)
   ObjectKeyType key_type = KEY_TYPE_S3;
   rgw_bucket bucket;
   uint32_t perm_mask = 0;
+  bool specified_perm_mask = false;
   uint64_t auid = -1;
   RGWUserInfo info;
   RGWRados *store;
@@ -654,6 +655,7 @@ int main(int argc, char **argv)
     } else if (ceph_argparse_witharg(args, i, &val, "--access", (char*)NULL)) {
       access = val;
       perm_mask = str_to_perm(access.c_str());
+      specified_perm_mask = true;
     } else if (ceph_argparse_witharg(args, i, &val, "--bucket-id", (char*)NULL)) {
       bucket_id = val;
       if (bucket_id.empty()) {
@@ -918,9 +920,10 @@ int main(int argc, char **argv)
     if (auid != (uint64_t)-1)
       info.auid = auid;
     if (!subuser.empty()) {
-      RGWSubUser u;
+      RGWSubUser u = info.subusers[subuser];
       u.name = subuser;
-      u.perm_mask = perm_mask;
+      if (specified_perm_mask)
+        u.perm_mask = perm_mask;
 
       info.subusers[subuser] = u;
     }