diff options
Diffstat (limited to 'src/rgw/rgw_op.cc')
-rw-r--r-- | src/rgw/rgw_op.cc | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index c792053dc72..e30b4dff976 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -1303,7 +1303,6 @@ void RGWPutACLs::execute() RGWACLXMLParser_S3 parser(s->cct); RGWAccessControlPolicy_S3 new_policy(s->cct); stringstream ss; - char *orig_data = data; char *new_data = NULL; ACLOwner owner; rgw_obj obj; @@ -1312,27 +1311,29 @@ void RGWPutACLs::execute() if (!parser.init()) { ret = -EINVAL; - goto done; + return; } owner.set_id(s->user.user_id); owner.set_name(s->user.display_name); - if (get_params() < 0) - goto done; + ret = get_params(); + if (ret < 0) + return; ldout(s->cct, 15) << "read len=" << len << " data=" << (data ? data : "") << dendl; if (!s->canned_acl.empty() && len) { ret = -EINVAL; - goto done; + return; } if (!s->canned_acl.empty()) { ret = get_canned_policy(owner, ss); if (ret < 0) - goto done; + return; new_data = strdup(ss.str().c_str()); + free(data); data = new_data; len = ss.str().size(); } @@ -1340,12 +1341,12 @@ void RGWPutACLs::execute() if (!parser.parse(data, len, 1)) { ret = -EACCES; - goto done; + return; } policy = (RGWAccessControlPolicy_S3 *)parser.find_first("AccessControlPolicy"); if (!policy) { ret = -EINVAL; - goto done; + return; } if (s->cct->_conf->subsys.should_gather(ceph_subsys_rgw, 15)) { @@ -1356,7 +1357,7 @@ void RGWPutACLs::execute() ret = policy->rebuild(&owner, new_policy); if (ret < 0) - goto done; + return; if (s->cct->_conf->subsys.should_gather(ceph_subsys_rgw, 15)) { ldout(s->cct, 15) << "New AccessControlPolicy:"; @@ -1368,12 +1369,6 @@ void RGWPutACLs::execute() obj.init(s->bucket, s->object_str); rgwstore->set_atomic(s->obj_ctx, obj); ret = rgwstore->set_attr(s->obj_ctx, obj, RGW_ATTR_ACL, bl); - -done: - free(orig_data); - free(new_data); - - send_response(); } int RGWInitMultipart::verify_permission() |