From: Yehuda Sadeh Date: Thu, 14 Apr 2011 21:59:09 +0000 (-0700) Subject: rgw: don't modify object owner when setting acls X-Git-Tag: v0.27~66 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a3144a11d1fdb02be280da3ea3fe3c3cfd11174a;p=ceph.git rgw: don't modify object owner when setting acls --- diff --git a/src/rgw/rgw_acl.h b/src/rgw/rgw_acl.h index a4bae9357f5a..6ac593f3db36 100644 --- a/src/rgw/rgw_acl.h +++ b/src/rgw/rgw_acl.h @@ -373,6 +373,7 @@ public: void set_name(string& name) { display_name = name; } string& get_id() { return id; } + string& get_display_name() { return display_name; } }; WRITE_CLASS_ENCODER(ACLOwner) diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 5ada240f7e78..bc4b201607d3 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -688,6 +688,7 @@ void RGWPutACLs::execute() stringstream ss; char *orig_data = data; char *new_data = NULL; + ACLOwner owner; if (!verify_permission(s, RGW_PERM_WRITE_ACP)) { ret = -EACCES; @@ -707,6 +708,10 @@ void RGWPutACLs::execute() ret = -ENOMEM; goto done; } + owner.set_id(s->user.user_id); + owner.set_name(s->user.display_name); + } else { + owner = s->acl->get_owner(); } if (get_params() < 0) @@ -720,7 +725,7 @@ void RGWPutACLs::execute() } if (!s->canned_acl.empty()) { RGWAccessControlPolicy canned_policy; - bool r = canned_policy.create_canned(s->user.user_id, s->user.display_name, s->canned_acl); + bool r = canned_policy.create_canned(owner.get_id(), owner.get_display_name(), s->canned_acl); if (!r) { ret = -EINVAL; goto done; @@ -754,7 +759,7 @@ void RGWPutACLs::execute() if (rgw_log_level >= 15) { RGW_LOG(15) << "New AccessControlPolicy" << endl; - new_policy.to_xml(cerr); + new_policy.to_xml(cout); RGW_LOG(15) << endl; }