diff options
author | Tulio Beloqui <tulio.beloqui@pexip.com> | 2020-12-16 16:16:09 +0100 |
---|---|---|
committer | GStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2021-08-25 08:36:06 +0000 |
commit | abf4b57a1c23da969f2bb6749e6c7cf9f4694be4 (patch) | |
tree | c6fb73dcd996d97342432d591ac4b1362153b6a3 /tests | |
parent | be5fab15e00162a3cb0eb6f84e3bfdecb01c8869 (diff) | |
download | gstreamer-plugins-good-abf4b57a1c23da969f2bb6749e6c7cf9f4694be4.tar.gz |
rtptwcc: fixed guint8 overflow of feedback packet count
Co-authored-by: Havard Graff <havard.graff@gmail.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/927>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/check/elements/rtpsession.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/check/elements/rtpsession.c b/tests/check/elements/rtpsession.c index d87de24bf..a11ed278c 100644 --- a/tests/check/elements/rtpsession.c +++ b/tests/check/elements/rtpsession.c @@ -3727,6 +3727,60 @@ GST_START_TEST (test_twcc_feedback_interval) GST_END_TEST; +GST_START_TEST (test_twcc_feedback_count_wrap) +{ + SessionHarness *h = session_harness_new (); + guint i; + GstBuffer *buf; + GstEvent *event; + GValueArray *packets_array; + + guint8 fci1[] = { + 0x05, 0xfd, /* base sequence number: 1533 */ + 0x00, 0x00, /* packet status count: 0 */ + 0x00, 0x00, 0x00, /* reference time: 0 */ + 0xff, /* feedback packet count: 255 */ + 0x00, 0x00, /* packet chunk: run-length, 0 */ + 0x00, /* 0 recv-delta */ + }; + + guint8 fci2[] = { + 0x05, 0xfe, /* base sequence number: 1534 */ + 0x00, 0x00, /* packet status count: 0 */ + 0x00, 0x00, 0x00, /* reference time: 0 */ + 0x01, /* feedback packet count: 1 */ + 0x00, 0x00, /* packet chunk: run-length, 0 */ + 0x00, /* 0 recv-delta */ + }; + + buf = generate_twcc_feedback_rtcp (fci1, sizeof (fci1)); + session_harness_recv_rtcp (h, buf); + + buf = generate_twcc_feedback_rtcp (fci2, sizeof (fci2)); + session_harness_recv_rtcp (h, buf); + + /* two reconfigure events */ + for (i = 0; i < 2; i++) + gst_event_unref (gst_harness_pull_upstream_event (h->send_rtp_h)); + + + for (i = 0; i < 2; i++) { + event = gst_harness_pull_upstream_event (h->send_rtp_h); + packets_array = + g_value_get_boxed (gst_structure_get_value (gst_event_get_structure + (event), "packets")); + + /* we expect zero packets due to feedback packet count jump ahead */ + fail_unless_equals_int (packets_array->n_values, 0); + gst_event_unref (event); + } + + session_harness_free (h); +} + +GST_END_TEST; + + static Suite * rtpsession_suite (void) { @@ -3793,6 +3847,7 @@ rtpsession_suite (void) tcase_add_test (tc_chain, test_twcc_send_and_recv); tcase_add_loop_test (tc_chain, test_twcc_feedback_interval, 0, G_N_ELEMENTS (test_twcc_feedback_interval_ctx)); + tcase_add_test (tc_chain, test_twcc_feedback_count_wrap); return s; |