aboutsummaryrefslogtreecommitdiffstats
path: root/ui/tap-sctp-analysis.c
diff options
context:
space:
mode:
authorIrene Ruengeler <ruengeler@wireshark.org>2016-06-13 17:39:42 +0200
committerAnders Broman <a.broman58@gmail.com>2016-06-14 15:41:19 +0000
commit4000386fdf2af28ab1f88fa24e8088deec2a5a05 (patch)
treeee6f13adec3db9e5b97019924cc9c737b00ceed4 /ui/tap-sctp-analysis.c
parent798f7e946e7ca4afa02ab46eb3f92de0595e76eb (diff)
Fix SCTP analysis broken
Bug: 12513 Change-Id: I3fdf79106ed007aadf528f0b373fb7a487f3d9a9 Reviewed-on: https://code.wireshark.org/review/15870 Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'ui/tap-sctp-analysis.c')
-rw-r--r--ui/tap-sctp-analysis.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/ui/tap-sctp-analysis.c b/ui/tap-sctp-analysis.c
index 05229b94f0..d5e6faf179 100644
--- a/ui/tap-sctp-analysis.c
+++ b/ui/tap-sctp-analysis.c
@@ -105,6 +105,7 @@ reset(void *arg)
if (info->frame_numbers != NULL)
{
+ g_list_foreach(info->frame_numbers, free_first, NULL);
g_list_free(info->frame_numbers);
info->frame_numbers = NULL;
}
@@ -735,6 +736,7 @@ packet(void *tapdata _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const voi
}
if (info->verification_tag1 != 0 || info->verification_tag2 != 0)
{
+ guint32 *number;
store = (address *)g_malloc(sizeof (address));
store->type = tmp_info.src.type;
store->len = tmp_info.src.len;
@@ -749,7 +751,9 @@ packet(void *tapdata _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const voi
memcpy(addr,(tmp_info.dst.data),tmp_info.dst.len);
store->data = addr;
info = add_address(store, info, 2);
- info->frame_numbers=g_list_prepend(info->frame_numbers,&(pinfo->num));
+ number = (guint32 *)g_malloc(sizeof(guint32));
+ *number = pinfo->num;
+ info->frame_numbers=g_list_prepend(info->frame_numbers,number);
if (datachunk || forwardchunk)
info->tsn1 = g_list_prepend(info->tsn1, tsn);
if (sackchunk == TRUE)
@@ -784,13 +788,14 @@ packet(void *tapdata _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const voi
} /* endif (!info) */
else
{
- info->direction = sctp_info->direction;
+ guint32 *number;
+ info->direction = sctp_info->direction;
- if (info->verification_tag1 == 0 && info->verification_tag2 != sctp_info->verification_tag) {
- info->verification_tag1 = sctp_info->verification_tag;
- } else if (info->verification_tag2 == 0 && info->verification_tag1 != sctp_info->verification_tag) {
- info->verification_tag2 = sctp_info->verification_tag;
- }
+ if (info->verification_tag1 == 0 && info->verification_tag2 != sctp_info->verification_tag) {
+ info->verification_tag1 = sctp_info->verification_tag;
+ } else if (info->verification_tag2 == 0 && info->verification_tag1 != sctp_info->verification_tag) {
+ info->verification_tag2 = sctp_info->verification_tag;
+ }
if (((tvb_get_guint8(sctp_info->tvb[0],0)) == SCTP_INIT_CHUNK_ID) ||
((tvb_get_guint8(sctp_info->tvb[0],0)) == SCTP_INIT_ACK_CHUNK_ID) ||
((tvb_get_guint8(sctp_info->tvb[0],0)) == SCTP_DATA_CHUNK_ID) ||
@@ -848,7 +853,9 @@ packet(void *tapdata _U_, packet_info *pinfo, epan_dissect_t *edt _U_, const voi
}
sack->frame_number = tsn->frame_number = pinfo->num;
}
- info->frame_numbers = g_list_prepend(info->frame_numbers,&(pinfo->num));
+ number = (guint32 *)g_malloc(sizeof(guint32));
+ *number = pinfo->num;
+ info->frame_numbers=g_list_prepend(info->frame_numbers,number);
store = (address *)g_malloc(sizeof (address));
store->type = tmp_info.src.type;