From: David Zafman Date: Fri, 12 Aug 2016 19:06:31 +0000 (-0700) Subject: osd: Handle corrupt attributes in get_object_context() X-Git-Tag: v11.1.0~256^2~9 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=30f8b0d6593718dd10bcf6ff459c95b4bb68c05c;p=ceph.git osd: Handle corrupt attributes in get_object_context() Signed-off-by: David Zafman --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 00ba62be7289..9d06c038ac50 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -9200,7 +9200,14 @@ ObjectContextRef ReplicatedPG::get_object_context(const hobject_t& soid, } } - object_info_t oi(bv); + object_info_t oi; + try { + bufferlist::iterator bliter = bv.begin(); + ::decode(oi, bliter); + } catch (...) { + dout(0) << __func__ << ": obc corrupt: " << soid << dendl; + return ObjectContextRef(); // -ENOENT! + } assert(oi.soid.pool == (int64_t)info.pgid.pool());