]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Pipe: Fix large message data content length causing overflow
authorHaomai Wang <haomai@xsky.com>
Sat, 5 Dec 2015 10:15:05 +0000 (18:15 +0800)
committerHaomai Wang <haomai@xsky.com>
Sat, 5 Dec 2015 11:19:57 +0000 (19:19 +0800)
Fix #13985
Signed-off-by: Haomai Wang <haomai@xsky.com>
Signed-off-by: Jun Huang <hjwsm1989@gmail.com>
src/msg/simple/Pipe.cc

index 33884c81cda4e68d5392234d48d19bc3e4556ea2..a717c40169a0e31de4045488aabb958e2a2eaed1 100644 (file)
@@ -2352,15 +2352,15 @@ int Pipe::write_message(const ceph_msg_header& header, const ceph_msg_footer& fo
 
   // payload (front+data)
   list<bufferptr>::const_iterator pb = blist.buffers().begin();
-  int b_off = 0;  // carry-over buffer offset, if any
-  int bl_pos = 0; // blist pos
-  int left = blist.length();
+  unsigned b_off = 0;  // carry-over buffer offset, if any
+  unsigned bl_pos = 0; // blist pos
+  unsigned left = blist.length();
 
   while (left > 0) {
-    int donow = MIN(left, (int)pb->length()-b_off);
+    unsigned donow = MIN(left, pb->length()-b_off);
     if (donow == 0) {
       ldout(msgr->cct,0) << "donow = " << donow << " left " << left << " pb->length " << pb->length()
-             << " b_off " << b_off << dendl;
+                         << " b_off " << b_off << dendl;
     }
     assert(donow > 0);
     ldout(msgr->cct,30) << " bl_pos " << bl_pos << " b_off " << b_off