From 0d4acc55ffd7f0f45324d1c933a2a5d0d47b84ec Mon Sep 17 00:00:00 2001 From: David Zafman Date: Wed, 14 Mar 2018 16:29:18 -0700 Subject: [PATCH] osd: Don't crash in get_hash_info() with a corrupt HashInfo Signed-off-by: David Zafman --- src/osd/ECBackend.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/osd/ECBackend.cc b/src/osd/ECBackend.cc index 9ad3608c3f8..c12a75bbb00 100644 --- a/src/osd/ECBackend.cc +++ b/src/osd/ECBackend.cc @@ -1713,7 +1713,12 @@ ECUtil::HashInfoRef ECBackend::get_hash_info( } if (bl.length() > 0) { bufferlist::iterator bp = bl.begin(); - decode(hinfo, bp); + try { + decode(hinfo, bp); + } catch(...) { + dout(0) << __func__ << ": Can't decode hinfo for " << hoid << dendl; + return ECUtil::HashInfoRef(); + } if (checks && hinfo.get_total_chunk_size() != (uint64_t)st.st_size) { dout(0) << __func__ << ": Mismatch of total_chunk_size " << hinfo.get_total_chunk_size() << dendl; -- 2.39.5