diff options
author | Danny Al-Gaaf <danny.al-gaaf@bisect.de> | 2013-05-14 19:15:23 +0200 |
---|---|---|
committer | Danny Al-Gaaf <danny.al-gaaf@bisect.de> | 2013-05-14 19:15:23 +0200 |
commit | d69290219d008ece749e8c43d9a358dc4304c417 (patch) | |
tree | d7f44c6a0577c12eaa9a96f0ca9d55c76283f4cd | |
parent | fb222a0a1c98a4141b6d0e79eac7a41c208f7147 (diff) | |
download | ceph-d69290219d008ece749e8c43d9a358dc4304c417.tar.gz |
mds/Server.cc: fix possible NULL pointer dereference
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>
-rw-r--r-- | src/mds/Server.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 46adf220021..4afe10d693f 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -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 |