]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ECBackend.cc: fix dynamic_cast error handling
authorDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Thu, 17 Sep 2015 12:39:02 +0000 (14:39 +0200)
committerDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Fri, 29 Jan 2016 20:51:17 +0000 (21:51 +0100)
Fix for:

CID 1316232 (#1 of 1): Unchecked dynamic_cast (FORWARD_NULL)
 dynamic_cast: Dynamic cast to pointer dynamic_cast <ReplicatedPG *>(this->get_parent())
  can return NULL.
 var_deref_model: Passing null pointer dynamic_cast <ReplicatedPG *>(this->get_parent())
  to is_undersized, which dereferences it.

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

index ba2e69daba473be9123b61a2ec4685b1e0e1af7b..6d5f0f1bd488364f9cc8461b1c11c68725583332 100644 (file)
@@ -861,7 +861,8 @@ void ECBackend::handle_sub_write(
     !(op.t.empty()),
     &localt);
 
-  if (!(dynamic_cast<ReplicatedPG *>(get_parent())->is_undersized()) &&
+  ReplicatedPG *_rPG = dynamic_cast<ReplicatedPG *>(get_parent());
+  if (_rPG && !_rPG->is_undersized() &&
       (unsigned)get_parent()->whoami_shard().shard >= ec_impl->get_data_chunk_count())
     op.t.set_fadvise_flag(CEPH_OSD_OP_FLAG_FADVISE_DONTNEED);