From 0804104ec01cd6acb57fd5c764bf1cfa47ff9a16 Mon Sep 17 00:00:00 2001 From: yuliyang Date: Fri, 5 Nov 2021 08:40:44 +0100 Subject: [PATCH] rgw: fix UploadPartCopy error code when src object not exist and src bucket not exist fix https://tracker.ceph.com/issues/53181 Signed-off-by: yuliyang --- src/rgw/rgw_op.cc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index f295fb92d576..1f057cefa5d0 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -367,10 +367,10 @@ static int read_obj_policy(const DoutPrefixProvider *dpp, map& bucket_attrs, RGWAccessControlPolicy* acl, string *storage_class, - boost::optional& policy, + boost::optional& policy, rgw::sal::Bucket* bucket, rgw::sal::Object* object, - optional_yield y, + optional_yield y, bool copy_src=false) { string upload_id; @@ -3489,6 +3489,9 @@ int RGWPutObj::init_processing(optional_yield y) { &bucket, y); if (ret < 0) { ldpp_dout(this, 5) << __func__ << "(): get_bucket() returned ret=" << ret << dendl; + if (ret == -ENOENT) { + ret = -ERR_NO_SUCH_BUCKET; + } return ret; } @@ -3556,9 +3559,9 @@ int RGWPutObj::verify_permission(optional_yield y) cs_object->set_prefetch_data(s->obj_ctx); /* check source object permissions */ - if (read_obj_policy(this, store, s, copy_source_bucket_info, cs_attrs, &cs_acl, nullptr, - policy, cs_bucket.get(), cs_object.get(), y, true) < 0) { - return -EACCES; + if (ret = read_obj_policy(this, store, s, copy_source_bucket_info, cs_attrs, &cs_acl, nullptr, + policy, cs_bucket.get(), cs_object.get(), y, true); ret < 0) { + return ret; } /* admin request overrides permission checks */ -- 2.47.3