]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: handling MSG_CLASS now uses caps->check_privileges instead of macros.
authorGreg Farnum <gregf@hq.newdream.net>
Mon, 22 Mar 2010 23:45:29 +0000 (16:45 -0700)
committerGreg Farnum <gregf@hq.newdream.net>
Tue, 23 Mar 2010 18:41:52 +0000 (11:41 -0700)
Also, delete a leaked message.

src/mon/Monitor.cc

index 693224d2aaf39e68da11bbeb1b55769220c9fde9..48511a452f5d9dfaac4a5ce69fc0b0872ebe1ef8 100644 (file)
@@ -725,7 +725,6 @@ do { \
       break;
 
     case MSG_CLASS:
-      ALLOW_MESSAGES_FROM(CEPH_ENTITY_TYPE_OSD);
       handle_class((MClass *)m);
       break;
 
@@ -999,6 +998,12 @@ int Monitor::mkfs(bufferlist& osdmapbl)
 
 void Monitor::handle_class(MClass *m)
 {
+  if (!m->caps->check_privileges(PAXOS_OSDMAP, MON_CAP_X)) {
+    dout(0) << "MClass received from entity without sufficient privileges "
+           << m->caps << dendl;
+    delete m;
+    return;
+  }
   switch (m->action) {
     case CLASS_SET:
     case CLASS_GET:
@@ -1006,6 +1011,7 @@ void Monitor::handle_class(MClass *m)
       break;
     case CLASS_RESPONSE:
       dout(0) << "got a class response (" << *m << ") ???" << dendl;
+      delete m;
       break;
     default:
       dout(0) << "got an unknown class message (" << *m << ") ???" << dendl;