]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/simple/Pipe: handle addr decode error 12266/head
authorSage Weil <sage@redhat.com>
Wed, 30 Nov 2016 02:50:52 +0000 (21:50 -0500)
committersmithfarm <ncutler@suse.com>
Thu, 1 Dec 2016 21:19:03 +0000 (22:19 +0100)
Fixes: http://tracker.ceph.com/issues/18072
Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit 2f5cfbc0de5464ab80581c416413a86c3d38dfb7)

src/msg/simple/Pipe.cc

index 1bc819a21e54ce6d85439f77a3bc5529ad7b918a..6d6357a49114bb4d0bbe903f7b8acaf42454a252 100644 (file)
@@ -959,12 +959,17 @@ int Pipe::connect()
     ldout(msgr->cct,2) << "connect couldn't read peer addrs, " << cpp_strerror(errno) << dendl;
     goto fail;
   }
-  {
+  try {
     bufferlist::iterator p = addrbl.begin();
     ::decode(paddr, p);
     ::decode(peer_addr_for_me, p);
-    port = peer_addr_for_me.get_port();
   }
+  catch (buffer::error& e) {
+    ldout(msgr->cct,2) << "connect couldn't decode peer addrs: " << e.what()
+                      << dendl;
+    goto fail;
+  }
+  port = peer_addr_for_me.get_port();
 
   ldout(msgr->cct,20) << "connect read peer addr " << paddr << " on socket " << sd << dendl;
   if (peer_addr != paddr) {