qtdemux: guard against timestamp calculation overflow in gap event loop
authorTim-Philipp Müller <tim@centricular.com>
Tue, 27 Sep 2022 12:56:54 +0000 (13:56 +0100)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Tue, 27 Sep 2022 13:07:15 +0000 (13:07 +0000)
Could possibly cause an endless loop.

Fixes #1400.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3084>

subprojects/gst-plugins-good/gst/isomp4/qtdemux.c

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