From: George Kiagiadakis Date: Tue, 28 Feb 2017 11:10:50 +0000 (+0200) Subject: rtprtxreceive: fix potential leak of old, unassociated, association requests X-Git-Tag: 1.19.3~509^2~2211 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=71b63d54fe4556ddaf6626cb2275825ba4eaed32;p=platform%2Fupstream%2Fgstreamer.git rtprtxreceive: fix potential leak of old, unassociated, association requests https://bugzilla.gnome.org/show_bug.cgi?id=722560 --- 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);