]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
auth/cephx: fix race conditon for some public methods of KeyServer
authorxie xingguo <xie.xingguo@zte.com.cn>
Tue, 7 Jun 2016 01:38:00 +0000 (09:38 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Tue, 7 Jun 2016 02:19:01 +0000 (10:19 +0800)
These methods are called only by AuthMonitor and are accessed
without protection of internal lock, which is not safe.

Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/auth/cephx/CephxKeyServer.h

index 76b1c1363057891deda42453c9f061a42d7f0c66..b742f052f527cf8de2ed8bb3732a77f28426ecfb 100644 (file)
@@ -241,10 +241,12 @@ public:
   }
 
   void clear_secrets() {
+    Mutex::Locker l(lock);
     data.clear_secrets();
   }
 
   void apply_data_incremental(KeyServerData::Incremental& inc) {
+    Mutex::Locker l(lock);
     data.apply_incremental(inc);
   }
   void set_ver(version_t ver) {
@@ -267,6 +269,7 @@ public:
     return (b != data.secrets_end());
   }
   int get_num_secrets() {
+    Mutex::Locker l(lock);
     return data.secrets.size();
   }
 
@@ -280,6 +283,7 @@ public:
     dst = data;
   }
   void export_keyring(KeyRing& keyring) {
+    Mutex::Locker l(lock);
     for (map<EntityName, EntityAuth>::iterator p = data.secrets.begin();
         p != data.secrets.end();
         ++p) {