diff options
-rw-r--r-- | epan/dissectors/packet-tcp.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/epan/dissectors/packet-tcp.c b/epan/dissectors/packet-tcp.c index 821bc43525..f2b6563d32 100644 --- a/epan/dissectors/packet-tcp.c +++ b/epan/dissectors/packet-tcp.c @@ -1065,6 +1065,7 @@ follow_tcp_tap_listener(void *tapdata, packet_info *pinfo, guint32 length = follow_data->tcph->th_seglen; guint32 data_length = tvb_captured_length(follow_data->tvb); guint32 newseq; + gboolean added_follow_record = FALSE; follow_record = g_new0(follow_record_t, 1); @@ -1141,6 +1142,7 @@ follow_tcp_tap_listener(void *tapdata, packet_info *pinfo, if (data_length > 0) { follow_info->bytes_written[follow_record->is_server] += follow_record->data->len; follow_info->payload = g_list_append(follow_info->payload, follow_record); + added_follow_record = TRUE; } /* done with the packet, see if it caused a fragment to fit */ @@ -1160,6 +1162,10 @@ follow_tcp_tap_listener(void *tapdata, packet_info *pinfo, follow_info->fragments[follow_record->is_server] = g_list_append(follow_info->fragments[follow_record->is_server], frag_follow_record); } } + if (!added_follow_record) { + g_byte_array_free(follow_record->data, TRUE); + g_free(follow_record); + } return FALSE; } |