]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix RGWDeleteMultiObj::verify_permission
authorMark Houghton <mhoughton@microfocus.com>
Tue, 3 Nov 2020 11:10:04 +0000 (11:10 +0000)
committerMatt Benjamin <mbenjamin@redhat.com>
Thu, 6 May 2021 14:11:42 +0000 (10:11 -0400)
Signed-off-by: Mark Houghton <mhoughton@microfocus.com>
(cherry picked from commit ba23750bea89a0e9818887abe62db0efef02fe3a)
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
 Conflicts:
src/rgw/rgw_op.cc

src/rgw/rgw_op.cc

index 07dc025b6b8c26c435eef7d6250fe0f59ca16419..27f71a38f78cf5e8f6571f0806dc94335f33c6d2 100644 (file)
@@ -6280,6 +6280,11 @@ void RGWGetHealthCheck::execute()
 
 int RGWDeleteMultiObj::verify_permission()
 {
+  int op_ret = get_params();
+  if (op_ret) {
+    return op_ret;
+  }
+
   if (s->iam_policy || ! s->iam_user_policies.empty()) {
     if (s->bucket_info.obj_lock_enabled()  && bypass_governance_mode) {
       auto r = eval_user_policies(s->iam_user_policies, s->env, boost::none,
@@ -6296,9 +6301,12 @@ int RGWDeleteMultiObj::verify_permission()
         }
       }
     }
+
+    bool empty = s->object.instance.empty();
+
     auto usr_policy_res = eval_user_policies(s->iam_user_policies, s->env,
                                               boost::none,
-                                              s->object.instance.empty() ?
+                                              empty ?
                                               rgw::IAM::s3DeleteObject :
                                               rgw::IAM::s3DeleteObjectVersion,
                                               ARN(s->bucket));
@@ -6309,7 +6317,7 @@ int RGWDeleteMultiObj::verify_permission()
     rgw::IAM::Effect r = Effect::Pass;
     if (s->iam_policy) {
       r = s->iam_policy->eval(s->env, *s->auth.identity,
-                                s->object.instance.empty() ?
+                                empty ?
                                 rgw::IAM::s3DeleteObject :
                                 rgw::IAM::s3DeleteObjectVersion,
                                 ARN(s->bucket));
@@ -6342,11 +6350,6 @@ void RGWDeleteMultiObj::execute()
   RGWObjectCtx *obj_ctx = static_cast<RGWObjectCtx *>(s->obj_ctx);
   char* buf;
 
-  op_ret = get_params();
-  if (op_ret < 0) {
-    goto error;
-  }
-
   buf = data.c_str();
   if (!buf) {
     op_ret = -EINVAL;