From: Sage Weil Date: Tue, 1 Oct 2013 22:22:05 +0000 (-0700) Subject: rados: make 'tmap dump' gracefully handle non-tmap data X-Git-Tag: v0.71~43^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=20974dc0520c754ea58e4364ac79cbb143b2f577;p=ceph.git rados: make 'tmap dump' gracefully handle non-tmap data Signed-off-by: Sage Weil --- diff --git a/src/tools/rados/rados.cc b/src/tools/rados/rados.cc index fdf7e61d41e0..009df5cd0af5 100644 --- a/src/tools/rados/rados.cc +++ b/src/tools/rados/rados.cc @@ -1813,8 +1813,15 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts, bufferlist::iterator p = outdata.begin(); bufferlist header; map kv; - ::decode(header, p); - ::decode(kv, p); + try { + ::decode(header, p); + ::decode(kv, p); + } + catch (buffer::error& e) { + cerr << "error decoding tmap " << pool_name << "/" << oid << std::endl; + ret = -EINVAL; + goto out; + } cout << "header (" << header.length() << " bytes):\n"; header.hexdump(cout); cout << "\n";