From: Abhishek Lekshmanan Date: Mon, 27 Jul 2020 14:58:30 +0000 (+0200) Subject: rgw: policy: reuse eval_principal to evaluate the policy principal X-Git-Tag: v16.1.0~1475^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F36303%2Fhead;p=ceph.git rgw: policy: reuse eval_principal to evaluate the policy principal Since the other edge case when no Principal or a NotPrincipal is supplied also must be accounted for, which is already done in eval_principal function. Also reraising the error as Effect::Pass in line with the previous output, though an Effect::Deny would also work here. Fixes: https://tracker.ceph.com/issues/46078 Signed-off-by: Abhishek Lekshmanan --- diff --git a/src/rgw/rgw_iam_policy.cc b/src/rgw/rgw_iam_policy.cc index 3dfcc187587c..2265334a76f4 100644 --- a/src/rgw/rgw_iam_policy.cc +++ b/src/rgw/rgw_iam_policy.cc @@ -977,12 +977,9 @@ ostream& operator <<(ostream& m, const Condition& c) { Effect Statement::eval(const Environment& e, boost::optional ida, uint64_t act, const ARN& res) const { - if (ida) { - if (!princ.empty() && !ida->is_identity(princ)) { - return Effect::Pass; - } else if (!noprinc.empty() && ida->is_identity(noprinc)) { - return Effect::Pass; - } + + if (eval_principal(e, ida) == Effect::Deny) { + return Effect::Pass; } if (!resource.empty()) {