]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw/sts: code for returning an error when an IAM policy
authorPritha Srivastava <prsrivas@redhat.com>
Fri, 18 Jun 2021 10:06:10 +0000 (15:36 +0530)
committerPritha Srivastava <prsrivas@redhat.com>
Fri, 19 Jan 2024 04:25:32 +0000 (09:55 +0530)
resource belongs to someone else's tenant.

While parsing the policy it discards the resource element,
but then when an operation is evaluated, since the resource element
is empty, it doesnt evaluate the resource at all and the policy
ends up erroneously allowing actions on resources in other tenants.

Fixes: https://tracker.ceph.com/issues/51219
Signed-off-by: Pritha Srivastava <prsrivas@redhat.com>
(cherry picked from commit be42b2cf04def671023b98c811e77e1e357eb38e)

src/rgw/rgw_iam_policy.cc

index 15642cc801c63beeff29675bc0d1f3e4bb47ecbb..a63e10e09c759c791793567f14fb3600b3d0953f 100644 (file)
@@ -558,10 +558,11 @@ bool ParseState::do_string(CephContext* cct, const char* s, size_t l) {
        a->account = pp->tenant;
       (w->id == TokenID::Resource ? t->resource : t->notresource)
        .emplace(std::move(*a));
-    }
-    else
+    } else {
       ldout(cct, 0) << "Supplied resource is discarded: " << string(s, l)
                    << dendl;
+      return false;
+    }
   } else if (w->kind == TokenKind::cond_key) {
     auto& t = pp->policy.statements.back();
     if (l > 0 && *s == '$') {