]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: Don't crash in get_hash_info() with a corrupt HashInfo
authorDavid Zafman <dzafman@redhat.com>
Wed, 14 Mar 2018 23:29:18 +0000 (16:29 -0700)
committerDavid Zafman <dzafman@redhat.com>
Tue, 10 Apr 2018 20:26:08 +0000 (13:26 -0700)
Signed-off-by: David Zafman <dzafman@redhat.com>
src/osd/ECBackend.cc

index 9ad3608c3f8b0e0e5ca17c8210970964a36ae0ff..c12a75bbb004fda480377bf49eeeb032e1ef5b13 100644 (file)
@@ -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;