]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds/Server.cc: fix possible NULL pointer dereference
authorDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Tue, 14 May 2013 17:15:23 +0000 (19:15 +0200)
committerDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Tue, 14 May 2013 17:15:23 +0000 (19:15 +0200)
Assert if straydn is NULL.

CID 1019554 (#2 of 2): Dereference after null check (FORWARD_NULL)
  var_deref_model: Passing null pointer "straydn" to function
  "MDSCacheObject::is_auth() const", which dereferences it.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
src/mds/Server.cc

index 46adf2200213cbc17beb09d04cde3ba1ef7cdf69..4afe10d693fd0cbba4eaba4d277f1d6e5dbfd8ed 100644 (file)
@@ -6210,9 +6210,12 @@ void Server::_rename_prepare(MDRequest *mdr,
   
   // guarantee stray dir is processed first during journal replay. unlink the old inode,
   // then link the source inode to destdn
-  if (destdnl->is_primary() && straydn->is_auth()) {
-    metablob->add_dir_context(straydn->get_dir());
-    metablob->add_dir(straydn->get_dir(), true);
+  if (destdnl->is_primary()) {
+    assert(straydn);
+    if (straydn->is_auth()) {
+      metablob->add_dir_context(straydn->get_dir());
+      metablob->add_dir(straydn->get_dir(), true);
+    }
   }
 
   // sub off target