From fdf002d06959aec4e5b2f91498b6e513986aec2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Graff?= Date: Mon, 24 Feb 2020 13:06:27 +0000 Subject: [PATCH] rtpsession: fix crash when no extension-header present for twcc --- gst/rtpmanager/rtpsession.c | 3 ++- tests/check/elements/rtpsession.c | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gst/rtpmanager/rtpsession.c b/gst/rtpmanager/rtpsession.c index b96d3cdfdf..401a69583f 100644 --- a/gst/rtpmanager/rtpsession.c +++ b/gst/rtpmanager/rtpsession.c @@ -2173,7 +2173,8 @@ packet_info_get_twcc_seqnum (RTPPacketInfo * pinfo, guint8 ext_id) gpointer data; guint size; - if (gst_rtp_buffer_get_extension_onebyte_header_from_bytes (pinfo->header_ext, + if (pinfo->header_ext && + gst_rtp_buffer_get_extension_onebyte_header_from_bytes (pinfo->header_ext, pinfo->header_ext_bit_pattern, ext_id, 0, &data, &size)) { if (size == 2) val = GST_READ_UINT16_BE (data); diff --git a/tests/check/elements/rtpsession.c b/tests/check/elements/rtpsession.c index da1a1fb071..94ace8923f 100644 --- a/tests/check/elements/rtpsession.c +++ b/tests/check/elements/rtpsession.c @@ -3540,6 +3540,20 @@ GST_START_TEST (test_twcc_recv_rtcp_reordered) GST_END_TEST; +GST_START_TEST (test_twcc_no_exthdr_in_buffer) +{ + SessionHarness *h = session_harness_new (); + + session_harness_set_twcc_recv_ext_id (h, TEST_TWCC_EXT_ID); + + fail_unless_equals_int (GST_FLOW_OK, + session_harness_recv_rtp (h, generate_test_buffer (0, 1234))); + session_harness_free (h); +} + +GST_END_TEST; + + GST_START_TEST (test_twcc_send_and_recv) { SessionHarness *h_send = session_harness_new (); @@ -3667,6 +3681,7 @@ rtpsession_suite (void) tcase_add_test (tc_chain, test_twcc_double_gap); tcase_add_test (tc_chain, test_twcc_recv_packets_reordered); tcase_add_test (tc_chain, test_twcc_recv_rtcp_reordered); + tcase_add_test (tc_chain, test_twcc_no_exthdr_in_buffer); tcase_add_test (tc_chain, test_twcc_send_and_recv); return s;