summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruengeler <ruengeler@wireshark.org>2017-01-23 17:04:50 +0100
committerAnders Broman <a.broman58@gmail.com>2017-01-24 13:57:21 +0000
commit68fd576529f6d4804b22fe18f59bb1f411fe8cea (patch)
tree648b7a6b55a5230f3f0ed14b48344753a2d78c6c
parentd284cfd4a622922f37bd964575b7d3a0e78b7db5 (diff)
downloadwireshark-68fd576529f6d4804b22fe18f59bb1f411fe8cea.tar.gz
Fix segfault, when only one TSN is captured
Change-Id: Ibb6494e1f180ec8187d260245731d33ac16085eb Reviewed-on: https://code.wireshark.org/review/19745 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r--ui/gtk/sctp_graph_dlg.c30
1 files changed, 24 insertions, 6 deletions
diff --git a/ui/gtk/sctp_graph_dlg.c b/ui/gtk/sctp_graph_dlg.c
index 3674a1ff1b..21809e7c0d 100644
--- a/ui/gtk/sctp_graph_dlg.c
+++ b/ui/gtk/sctp_graph_dlg.c
@@ -51,7 +51,7 @@
#define COUNT_TYPE_BYTES 1
#define COUNT_TYPE_ADVANCED 2
-#define LEFT_BORDER 60
+#define LEFT_BORDER 120
#define RIGHT_BORDER 10
#define TOP_BORDER 10
#define BOTTOM_BORDER 50
@@ -183,6 +183,9 @@ draw_sack_graph(struct sctp_udata *u_data)
}
}
+ if (min_tsn == max_tsn)
+ min_tsn = 0;
+
while (list)
{
sack = (tsn_t*) (list->data);
@@ -373,6 +376,10 @@ draw_nr_sack_graph(struct sctp_udata *u_data)
max_tsn=u_data->assoc->min_tsn1+u_data->io->tmp_max_tsn1;
}
}
+
+ if (min_tsn == max_tsn)
+ min_tsn = 0;
+
while (list)
{
sack = (tsn_t*) (list->data);
@@ -563,6 +570,9 @@ draw_tsn_graph(struct sctp_udata *u_data)
}
}
+ if (min_tsn == max_tsn)
+ min_tsn = 0;
+
while (list)
{
tsn = (tsn_t*) (list->data);
@@ -625,6 +635,11 @@ sctp_graph_draw(struct sctp_udata *u_data)
GtkAllocation widget_alloc;
cairo_t *cr;
+ if ((u_data->dir==1 && u_data->assoc->n_array_tsn1==0) || (u_data->dir==2 && u_data->assoc->n_array_tsn2==0)) {
+ simple_dialog(ESD_TYPE_INFO, ESD_BTN_OK, "No Data Chunks sent");
+ return;
+ }
+
if (u_data->io->x1_tmp_sec==0 && u_data->io->x1_tmp_usec==0)
u_data->io->offset=0;
else
@@ -649,7 +664,9 @@ sctp_graph_draw(struct sctp_udata *u_data)
{
if (u_data->io->tmp==FALSE)
{
- if (u_data->assoc->tsn1!=NULL || u_data->assoc->sack1!=NULL)
+ if (u_data->assoc->n_array_tsn1==1)
+ u_data->io->max_y = u_data->io->tmp_max_tsn1;
+ else if (u_data->assoc->tsn1!=NULL || u_data->assoc->sack1!=NULL)
u_data->io->max_y=u_data->io->tmp_max_tsn1 - u_data->io->tmp_min_tsn1;
else
u_data->io->max_y= 0;
@@ -665,7 +682,9 @@ sctp_graph_draw(struct sctp_udata *u_data)
{
if (u_data->io->tmp==FALSE)
{
- if (u_data->assoc->tsn2!=NULL || u_data->assoc->sack2!=NULL)
+ if (u_data->assoc->n_array_tsn2==1)
+ u_data->io->max_y = u_data->io->tmp_max_tsn2;
+ else if (u_data->assoc->tsn2!=NULL || u_data->assoc->sack2!=NULL)
u_data->io->max_y=u_data->io->tmp_max_tsn2 -u_data->io->tmp_min_tsn2;
else
u_data->io->max_y= 0;
@@ -974,7 +993,8 @@ sctp_graph_draw(struct sctp_udata *u_data)
if (i>=u_data->io->min_y)
{
length=5;
- g_snprintf(label_string, sizeof(label_string), "%d", i);
+
+ g_snprintf(label_string, sizeof(label_string), "%u", i);
if (i%distance==0 || (distance<=5 && u_data->io->y_interval>10))
{
length=10;
@@ -1013,8 +1033,6 @@ sctp_graph_draw(struct sctp_udata *u_data)
}
}
}
- else if ((u_data->dir==1 && u_data->assoc->n_array_tsn1==0) || (u_data->dir==2 && u_data->assoc->n_array_tsn2==0))
- simple_dialog(ESD_TYPE_INFO, ESD_BTN_OK, "No Data Chunks sent");
g_object_unref(G_OBJECT(layout));
}