aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2010-11-21 10:41:01 +0000
committerAnders Broman <anders.broman@ericsson.com>2010-11-21 10:41:01 +0000
commit98fba4de6f07e9623dc2f05ab38f747d12f56c81 (patch)
treede02a1125f13416d92bef9e316dd9831458f79cb
parentebac83d6a392e38a05a8a394702309083e2736ac (diff)
From Jakub Zawadzki via Alexander Koeppe.
Improvement of checking available length highlighting byteview data. https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5383 svn path=/trunk/; revision=34989
-rw-r--r--gtk/main_proto_draw.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gtk/main_proto_draw.c b/gtk/main_proto_draw.c
index 7b4efda785..1e00bf338f 100644
--- a/gtk/main_proto_draw.c
+++ b/gtk/main_proto_draw.c
@@ -1557,11 +1557,10 @@ packet_hex_print(GtkWidget *bv, const guint8 *pd, frame_data *fd,
guint32 bmask = 0x00; int bmask_le = 0;
int astart = -1, aend = -1, alen = -1;
+
if (finfo != NULL) {
bstart = finfo->start;
blen = finfo->length;
- if (blen && finfo->ds_tvb && blen > tvb_reported_length_remaining(finfo->ds_tvb, bstart))
- blen = tvb_reported_length_remaining(finfo->ds_tvb, bstart);
/* bmask = finfo->hfinfo->bitmask << finfo->hfinfo->bitshift; */ /* (value & mask) >> shift */
bmask = finfo->hfinfo->bitmask;
astart = finfo->appendix_start;
@@ -1606,6 +1605,10 @@ packet_hex_print(GtkWidget *bv, const guint8 *pd, frame_data *fd,
astart = aend = -1;
}
+ /* don't exceed the end of available data */
+ if (aend != -1 && (guint)aend > len) aend = len;
+ if (bend != -1 && (guint)bend > len) bend = len;
+
/* save the information needed to redraw the text */
/* should we save the fd & finfo pointers instead ?? */
g_object_set_data(G_OBJECT(bv), E_BYTE_VIEW_START_KEY, GINT_TO_POINTER(bstart));