diff options
author | Anders Broman <anders.broman@ericsson.com> | 2010-11-21 10:41:01 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2010-11-21 10:41:01 +0000 |
commit | 98fba4de6f07e9623dc2f05ab38f747d12f56c81 (patch) | |
tree | de02a1125f13416d92bef9e316dd9831458f79cb /gtk | |
parent | ebac83d6a392e38a05a8a394702309083e2736ac (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
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/main_proto_draw.c | 7 |
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)); |