From 13e555a1376e81bcd798438b029a85ec44d8aef8 Mon Sep 17 00:00:00 2001 From: Fred Klassen Date: Wed, 3 Jun 2020 11:15:07 -0700 Subject: [PATCH] Bug #594 Add some additional headroom to cached packets When using '--preload-pcap' option any additional VLAN headers results in Heap Buffer Overflow. Add 512 bytes additional buffer space. TODO: Add intelligence to understand when and how much memory to allocate/reallocate based on tcpedit function. --- src/defines.h.in | 2 ++ src/send_packets.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/defines.h.in b/src/defines.h.in index d46cd0e64..3e4ba06d6 100644 --- a/src/defines.h.in +++ b/src/defines.h.in @@ -161,6 +161,8 @@ typedef struct tcpr_speed_s { * couple VLAN headers or a L2 header */ +#define PACKET_HEADROOM 512 /* additional headroom allocated for packets to accommodate editing */ + #define DNS_RESOLVE 1 #define DNS_DONT_RESOLVE 0 diff --git a/src/send_packets.c b/src/send_packets.c index 672e8e727..ca93bfaf1 100644 --- a/src/send_packets.c +++ b/src/send_packets.c @@ -1055,7 +1055,7 @@ get_next_packet(tcpreplay_t *ctx, pcap_t *pcap, struct pcap_pkthdr *pkthdr, int (*prev_packet)->next = NULL; pktlen = pkthdr->len; - (*prev_packet)->pktdata = safe_malloc(pktlen); + (*prev_packet)->pktdata = safe_malloc(pktlen + PACKET_HEADROOM); memcpy((*prev_packet)->pktdata, pktdata, pktlen); memcpy(&((*prev_packet)->pkthdr), pkthdr, sizeof(struct pcap_pkthdr)); }