rx-preparesendpacket-avoid-double-free-20061205
authorDerrick Brashear <shadow@dementia.org>
Tue, 5 Dec 2006 19:38:44 +0000 (19:38 +0000)
committerDerrick Brashear <shadow@dementia.org>
Tue, 5 Dec 2006 19:38:44 +0000 (19:38 +0000)
wow, this is special

existed forever but only when we stopped leaking packets did it become a problem

anyway, don't free packets and forget to reduce the number of packets in play

src/rx/rx_packet.c

index 83aafb5..804cf38 100644 (file)
@@ -2629,7 +2629,7 @@ rxi_PrepareSendPacket(register struct rx_call *call,
        osi_Panic("PrepareSendPacket 1\n");     /* MTUXXX */
     } else {
         struct rx_queue q;
-       int nb;
+       int nb;
 
        queue_Init(&q);
 
@@ -2640,8 +2640,8 @@ rxi_PrepareSendPacket(register struct rx_call *call,
        if (nb)
            rxi_FreePackets(nb, &q);
 
-       p->niovecs = i;
-       p->wirevec[i - 1].iov_len += len;
+       p->niovecs = MAX(2, i);
+       p->wirevec[MAX(2, i) - 1].iov_len += len;
     }
     RXS_PreparePacket(conn->securityObject, call, p);
 }