summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Al-Gaaf <danny.al-gaaf@bisect.de>2013-05-14 19:15:23 +0200
committerDanny Al-Gaaf <danny.al-gaaf@bisect.de>2013-05-14 19:15:23 +0200
commitd69290219d008ece749e8c43d9a358dc4304c417 (patch)
treed7f44c6a0577c12eaa9a96f0ca9d55c76283f4cd
parentfb222a0a1c98a4141b6d0e79eac7a41c208f7147 (diff)
downloadceph-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.cc9
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