summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorHaakon Sporsheim <haakon@pexip.com>2017-08-25 11:57:26 +0200
committerTim-Philipp Müller <tim@centricular.com>2017-12-02 13:58:34 +0000
commit3c0d006c03c4118df4700d17bf540615f2c634ed (patch)
tree6b025bc80d9ec103e1f508335823ba5dccf92fc9 /tests
parentb4ca81591cb76045c98ac1061eae0b200a3ea9f9 (diff)
rtpsession: Handle zero length feedback packets
https://bugzilla.gnome.org/show_bug.cgi?id=791074
Diffstat (limited to 'tests')
-rw-r--r--tests/check/elements/rtpsession.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/check/elements/rtpsession.c b/tests/check/elements/rtpsession.c
index c5d362525..94925ee66 100644
--- a/tests/check/elements/rtpsession.c
+++ b/tests/check/elements/rtpsession.c
@@ -683,6 +683,28 @@ GST_START_TEST (test_ignore_suspicious_bye)
GST_END_TEST;
+GST_START_TEST (test_illegal_rtcp_fb_packet)
+{
+ SessionHarness *h = session_harness_new ();
+ GstBuffer *buf;
+ /* Zero length RTCP feedback packet (reduced size) */
+ const guint8 rtcp_zero_fb_pkt[] = { 0x8f, 0xce, 0x00, 0x00 };
+
+ g_object_set (h->internal_session, "internal-ssrc", 0xDEADBEEF, NULL);
+
+ buf = gst_buffer_new_and_alloc (sizeof (rtcp_zero_fb_pkt));
+ gst_buffer_fill (buf, 0, rtcp_zero_fb_pkt, sizeof (rtcp_zero_fb_pkt));
+ GST_BUFFER_DTS (buf) = GST_BUFFER_PTS (buf) = G_GUINT64_CONSTANT (0);
+
+ /* Push the packet, this did previously crash because length of packet was
+ * never validated. */
+ fail_unless_equals_int (GST_FLOW_OK, session_harness_recv_rtcp (h, buf));
+
+ session_harness_free (h);
+}
+
+GST_END_TEST;
+
static Suite *
rtpsession_suite (void)
{
@@ -697,6 +719,7 @@ rtpsession_suite (void)
tcase_add_test (tc_chain, test_dont_lock_on_stats);
tcase_add_test (tc_chain, test_ignore_suspicious_bye);
+ tcase_add_test (tc_chain, test_illegal_rtcp_fb_packet);
return s;
}