From: David Zafman Date: Mon, 5 Jun 2017 22:15:51 +0000 (-0700) Subject: osd: Handle bad object info decode in repair_object() X-Git-Tag: ses5-milestone8~1^2~19^2~14 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6ccc8f2d37925c95f6e5347db8178e9cde69f7e7;p=ceph.git osd: Handle bad object info decode in repair_object() Signed-off-by: David Zafman --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index e753310534bd..e1eb150d81e4 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -4100,7 +4100,14 @@ void PG::repair_object( eversion_t v; bufferlist bv; bv.push_back(po.attrs[OI_ATTR]); - object_info_t oi(bv); + object_info_t oi; + try { + bufferlist::iterator bliter = bv.begin(); + ::decode(oi, bliter); + } catch (...) { + dout(0) << __func__ << ": Need version of replica, bad object_info_t: " << soid << dendl; + assert(0); + } if (bad_peer != primary) { peer_missing[bad_peer].add(soid, oi.version, eversion_t()); } else {