]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: MRemoveSnaps uses caps->check_privileges
authorGreg Farnum <gregf@hq.newdream.net>
Mon, 22 Mar 2010 17:10:00 +0000 (10:10 -0700)
committerGreg Farnum <gregf@hq.newdream.net>
Tue, 23 Mar 2010 18:41:51 +0000 (11:41 -0700)
src/mon/Monitor.cc
src/mon/OSDMonitor.cc

index 4be353398532877d350f2c66a6dcec10d2f7e74c..b834475bd562ad860f5391ea7acd1e7db9286874 100644 (file)
@@ -626,7 +626,6 @@ do { \
       break;
 
     case MSG_REMOVE_SNAPS:
-      ALLOW_CAPS(PAXOS_OSDMAP, MON_CAP_RW);
       fill_caps(m);
       paxos_service[PAXOS_OSDMAP]->dispatch((PaxosServiceMessage*)m);
       break;
index f2cb291bf73fecbeb45dc5522705e25589dd01dc..c65055c200a88d7456edf0ca54f17c4ccc21f49e 100644 (file)
@@ -595,7 +595,14 @@ bool OSDMonitor::prepare_pgtemp(MOSDPGTemp *m)
 bool OSDMonitor::preprocess_remove_snaps(MRemoveSnaps *m)
 {
   dout(7) << "preprocess_remove_snaps " << *m << dendl;
-  
+
+  //check privilege, ignore if failed
+  if (!m->caps->check_privileges(PAXOS_OSDMAP, MON_CAP_RW)) {
+    dout(0) << "got preprocess_remove_snaps from entity with insufficient caps "
+           << *m->caps << dendl;
+    delete m;
+    return true;
+  }
   for (map<int, vector<snapid_t> >::iterator q = m->snaps.begin();
        q != m->snaps.end();
        q++) {