qtdemux: guard against timestamp calculation overflow in gap event loop

Could possibly cause an endless loop.

Fixes #1400.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3084>
This commit is contained in:
Tim-Philipp Müller 2022-09-27 13:56:54 +01:00 committed by GStreamer Marge Bot
parent 3c2c4bbe2c
commit 02a8f9973b

View file

@ -6575,6 +6575,7 @@ gst_qtdemux_loop_state_movie (GstQTDemux * qtdemux)
/* send gap events until the stream catches up */ /* send gap events until the stream catches up */
/* gaps can only be sent after segment is activated (segment.stop is no longer -1) */ /* gaps can only be sent after segment is activated (segment.stop is no longer -1) */
while (GST_CLOCK_TIME_IS_VALID (stream->segment.position) && while (GST_CLOCK_TIME_IS_VALID (stream->segment.position) &&
pseudo_cur_time < (G_MAXUINT64 - gap_threshold) &&
pseudo_cur_time + gap_threshold < pseudo_target_time) { pseudo_cur_time + gap_threshold < pseudo_target_time) {
GstEvent *gap = GstEvent *gap =
gst_event_new_gap (stream->segment.position, gap_threshold); gst_event_new_gap (stream->segment.position, gap_threshold);