From a3144a11d1fdb02be280da3ea3fe3c3cfd11174a Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Thu, 14 Apr 2011 14:59:09 -0700 Subject: [PATCH] rgw: don't modify object owner when setting acls --- src/rgw/rgw_acl.h | 1 + src/rgw/rgw_op.cc | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/rgw/rgw_acl.h b/src/rgw/rgw_acl.h index a4bae9357f5a5..6ac593f3db36c 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 5ada240f7e78f..bc4b201607d39 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; } -- 2.39.5