From: Jason Dillaman Date: Thu, 21 Jun 2018 01:30:47 +0000 (-0400) Subject: mon/OSDMonitor: enforce caps for all remaining pool ops X-Git-Tag: v14.0.1~910^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=61c06200fe59996bba2bb65fc402207bc10fd459;p=ceph.git mon/OSDMonitor: enforce caps for all remaining pool ops Signed-off-by: Jason Dillaman --- diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index c3a687633317..be4ee37fb1c4 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -11812,6 +11812,13 @@ bool OSDMonitor::enforce_pool_op_caps(MonOpRequestRef op) } break; default: + if (!session->is_capable("osd", MON_CAP_W)) { + dout(0) << "got pool op from entity with insufficient privileges. " + << "message: " << *m << std::endl + << "caps: " << session->caps << dendl; + _pool_op_reply(op, -EPERM, osdmap.get_epoch()); + return true; + } break; } @@ -11910,19 +11917,6 @@ bool OSDMonitor::preprocess_pool_op_create(MonOpRequestRef op) { op->mark_osdmon_event(__func__); MPoolOp *m = static_cast(op->get_req()); - MonSession *session = m->get_session(); - if (!session) { - _pool_op_reply(op, -EPERM, osdmap.get_epoch()); - return true; - } - if (!session->is_capable("osd", MON_CAP_W)) { - dout(5) << "attempt to create new pool without sufficient auid privileges!" - << "message: " << *m << std::endl - << "caps: " << session->caps << dendl; - _pool_op_reply(op, -EPERM, osdmap.get_epoch()); - return true; - } - int64_t pool = osdmap.lookup_pg_pool_name(m->name.c_str()); if (pool >= 0) { _pool_op_reply(op, 0, osdmap.get_epoch());