]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rados: make 'tmap dump' gracefully handle non-tmap data
authorSage Weil <sage@inktank.com>
Tue, 1 Oct 2013 22:22:05 +0000 (15:22 -0700)
committerSage Weil <sage@inktank.com>
Wed, 2 Oct 2013 00:21:21 +0000 (17:21 -0700)
Signed-off-by: Sage Weil <sage@inktank.com>
src/tools/rados/rados.cc

index fdf7e61d41e0a0e3cbb572b1b118d9ac1ec26fad..009df5cd0af5b3a7ca0923bc86b9655e7c69a2f1 100644 (file)
@@ -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<string, bufferlist> 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";