From: David Zafman Date: Wed, 14 Mar 2018 23:29:18 +0000 (-0700) Subject: osd: Don't crash in get_hash_info() with a corrupt HashInfo X-Git-Tag: v13.1.0~334^2~13 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0d4acc55ffd7f0f45324d1c933a2a5d0d47b84ec;p=ceph.git osd: Don't crash in get_hash_info() with a corrupt HashInfo Signed-off-by: David Zafman --- diff --git a/src/osd/ECBackend.cc b/src/osd/ECBackend.cc index 9ad3608c3f8b..c12a75bbb004 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;