From 6ccc8f2d37925c95f6e5347db8178e9cde69f7e7 Mon Sep 17 00:00:00 2001 From: David Zafman Date: Mon, 5 Jun 2017 15:15:51 -0700 Subject: [PATCH] osd: Handle bad object info decode in repair_object() Signed-off-by: David Zafman --- src/osd/PG.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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 { -- 2.47.3