]> git.sesse.net Git - ffmpeg/commit
avformat/movenc: Fix stack overflow when remuxing timecode tracks
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Wed, 30 Sep 2020 12:36:23 +0000 (14:36 +0200)
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Thu, 1 Oct 2020 12:30:34 +0000 (14:30 +0200)
commit22a2386a561ccbaabbbfd5cf7f89b2cbbade71b0
tree3a98bb2e2e17e7f13afbd094a55b3985f9bf0859
parent66eadb3926c8071c2f57d098135f07e6bae1e196
avformat/movenc: Fix stack overflow when remuxing timecode tracks

There are two possible kinds of timecode tracks (with tag "tmcd") in the
mov muxer: Tracks created internally by the muxer and timecode tracks
sent by the user. If any of the latter exists, the former are
deactivated. The former all belong to another track, the source
track; the latter don't have a source track set, but the index of the
source track is initially zeroed by av_mallocz_array(). This is a
problem since 3d894db700cc1e360a7a75ab9ac8bf67ac6670a3: Said commit added
a function that calculates the duration of tracks and the duration of
timecode tracks is calculated by rescaling the duration (calculated by
the very same function) of the source track. This gives an infinite
recursion if the first track (the one that will be treated as source
track for all timecode tracks) is a timecode track itself, leading to a
stack overflow.

This commit fixes this by not using the nonexistent source track
when calculating the duration of timecode tracks not created internally
by the mov muxer.

Reviewed-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
libavformat/movenc.c