]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: restrict mon 'join' message/command
authorSage Weil <sage@inktank.com>
Wed, 23 May 2012 01:29:52 +0000 (18:29 -0700)
committerSage Weil <sage@inktank.com>
Wed, 23 May 2012 01:31:48 +0000 (18:31 -0700)
Signed-off-by: Sage Weil <sage@inktank.com>
src/mon/MonmapMonitor.cc

index 1b84e463b1317c49a72b77e8fbaeaa2d8bfd9342..ec5b0e3873de0f0e62660cfcfd430e081006b93d 100644 (file)
@@ -355,6 +355,15 @@ bool MonmapMonitor::preprocess_join(MMonJoin *join)
 {
   dout(10) << "preprocess_join " << join->name << " at " << join->addr << dendl;
 
+  MonSession *session = join->get_session();
+  if (!session ||
+      (!session->caps.get_allow_all() &&
+       !session->caps.check_privileges(PAXOS_MONMAP, MON_CAP_ALL))) {
+    dout(10) << " insufficient caps" << dendl;
+    join->put();
+    return true;
+  }
+
   if (pending_map.contains(join->name) && !pending_map.get_addr(join->name).is_blank_ip()) {
     dout(10) << " already have " << join->name << dendl;
     join->put();