aboutsummaryrefslogtreecommitdiffstats
path: root/ui/gtk/rtp_stream_dlg.c
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2015-10-01 16:56:01 +0200
committerMichael Mann <mmann78@netscape.net>2015-10-01 20:46:50 +0000
commitb02a0ee48a51ccbb33ad76ce84ecb05409a6973a (patch)
treeac9accb993abff51e62b671699a1e4afcfd11bac /ui/gtk/rtp_stream_dlg.c
parentba5df1eea67b9e1cfde0a0d649d1b6db560fb745 (diff)
Fix crashes related to RTP Streams analysis
The data that describes RTP streams become invalid when packets are re-dissected. This results in a crash in GTK when the "RTP Analyse" option is used and and a crash in Qt when the display filter is changed while the RTP Streams dialog is open. Fix this by adding a tap_reset callback (modelled after mcaststream) to the RTP tap listener that allows the GTK+ and Qt dialogs to clear the displayed list of RTP streams. Bug: 10016 Change-Id: I7478678db63d7ac8110c44c163844e9f66fad9e9 Reviewed-on: https://code.wireshark.org/review/10728 Reviewed-by: Peter Wu <peter@lekensteyn.nl> Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'ui/gtk/rtp_stream_dlg.c')
-rw-r--r--ui/gtk/rtp_stream_dlg.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/ui/gtk/rtp_stream_dlg.c b/ui/gtk/rtp_stream_dlg.c
index 8916eed598..d3dce19fb5 100644
--- a/ui/gtk/rtp_stream_dlg.c
+++ b/ui/gtk/rtp_stream_dlg.c
@@ -51,6 +51,7 @@ static const gchar FWD_LABEL_TEXT[] = "Select a forward stream with left mouse b
static const gchar FWD_ONLY_LABEL_TEXT[] = "Select a forward stream with Ctrl + left mouse button";
static const gchar REV_LABEL_TEXT[] = "Select a reverse stream with Ctrl + left mouse button";
+static void rtpstream_tap_reset(rtpstream_tapinfo_t *ti_ptr);
static void rtpstream_tap_draw(rtpstream_tapinfo_t *ti_ptr);
static void rtpstream_dlg_mark_packet(rtpstream_tapinfo_t *tapinfo, frame_data *fd);
void register_tap_listener_rtp_stream_dlg(void);
@@ -58,8 +59,8 @@ void register_tap_listener_rtp_stream_dlg(void);
/* The one and only global rtpstream_tapinfo_t structure for tshark and wireshark.
*/
static rtpstream_tapinfo_t the_tapinfo_struct =
- { rtpstream_tap_draw, rtpstream_dlg_mark_packet, NULL, 0, NULL, 0,
- TAP_ANALYSE, NULL, NULL, NULL, FALSE
+ { rtpstream_tap_reset, rtpstream_tap_draw, rtpstream_dlg_mark_packet,
+ NULL, 0, NULL, 0, TAP_ANALYSE, NULL, NULL, NULL, FALSE
};
/****************************************************************************/
@@ -1105,6 +1106,15 @@ rtpstream_dlg_update(GList *list_lcl)
}
static void
+rtpstream_tap_reset(rtpstream_tapinfo_t *tapinfo _U_)
+{
+ if (rtp_stream_dlg != NULL) {
+ gtk_list_store_clear(list_store);
+ streams_nb = 0;
+ }
+}
+
+static void
rtpstream_tap_draw(rtpstream_tapinfo_t *tapinfo)
{
if (tapinfo) {