]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix bucket link
authorYehuda Sadeh <yehuda@inktank.com>
Mon, 8 Jul 2013 21:01:13 +0000 (14:01 -0700)
committerYehuda Sadeh <yehuda@inktank.com>
Mon, 8 Jul 2013 21:02:45 +0000 (14:02 -0700)
Bucket link was assuming the bucket head object was holding the
bucket acl, which is not true anymore.

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

index 00ff6008256fbc2ede0a54ff59f89782d433c6cd..23354233c963ec292a65bd6f390eb9d0264dd6bc 100644 (file)
@@ -417,12 +417,20 @@ int RGWBucket::link(RGWBucketAdminOpState& op_state, std::string *err_msg)
   rgw_bucket bucket = op_state.get_bucket();
 
   string uid_str(user_info.user_id);
-  bufferlist aclbl;
   rgw_obj obj(bucket, no_oid);
   RGWObjVersionTracker objv_tracker;
 
-  int r = store->get_attr(NULL, obj, RGW_ATTR_ACL, aclbl, &objv_tracker);
-  if (r >= 0) {
+  map<string, bufferlist> attrs;
+  RGWBucketInfo bucket_info;
+
+  int r = store->get_bucket_info(NULL, bucket.name, bucket_info, NULL, &attrs);
+  if (r < 0) {
+    return r;
+  }
+
+  map<string, bufferlist>::iterator aiter = attrs.find(RGW_ATTR_ACL);
+  if (aiter != attrs.end()) {
+    bufferlist aclbl = aiter->second;
     RGWAccessControlPolicy policy;
     ACLOwner owner;
     try {