From 71b63d54fe4556ddaf6626cb2275825ba4eaed32 Mon Sep 17 00:00:00 2001 From: George Kiagiadakis Date: Tue, 28 Feb 2017 13:10:50 +0200 Subject: [PATCH] rtprtxreceive: fix potential leak of old, unassociated, association requests https://bugzilla.gnome.org/show_bug.cgi?id=722560 --- gst/rtpmanager/gstrtprtxreceive.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/gst/rtpmanager/gstrtprtxreceive.c b/gst/rtpmanager/gstrtprtxreceive.c index 91edda2..b99c0a3 100644 --- a/gst/rtpmanager/gstrtprtxreceive.c +++ b/gst/rtpmanager/gstrtprtxreceive.c @@ -505,6 +505,23 @@ gst_rtp_rtx_receive_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) rtx->last_time = GST_BUFFER_PTS (buffer); + if (g_hash_table_size (rtx->seqnum_ssrc1_map) > 0) { + GHashTableIter iter; + gpointer key, value; + + g_hash_table_iter_init (&iter, rtx->seqnum_ssrc1_map); + while (g_hash_table_iter_next (&iter, &key, &value)) { + SsrcAssoc *assoc = value; + + /* remove association request if it is too old */ + if (GST_CLOCK_TIME_IS_VALID (rtx->last_time) && + GST_CLOCK_TIME_IS_VALID (assoc->time) && + assoc->time + ASSOC_TIMEOUT < rtx->last_time) { + g_hash_table_iter_remove (&iter); + } + } + } + is_rtx = g_hash_table_lookup_extended (rtx->rtx_pt_map, GUINT_TO_POINTER (payload_type), NULL, NULL); -- 2.7.4