diff options
author | Alfred E. Heggestad <alfred.heggestad@gmail.com> | 2020-01-30 10:58:01 +0100 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2020-01-31 10:15:37 -0300 |
commit | d550a2856079dfbb600fd36f6baf5f136c743c98 (patch) | |
tree | a4ee1da0d597dd2bb9a6d89a6a711fb65dd81485 /libavformat/dashenc.c | |
parent | 53b4128ea0271d725a1c556efee65ac04322d250 (diff) | |
download | ffmpeg-d550a2856079dfbb600fd36f6baf5f136c743c98.tar.gz |
dashenc: check pts to prevent division by zero error
this usecase will cause a division by zero trap:
1. dashenc has received one frame
2. os->max_pts and os->start_pts have same value
3. delta between max_pts and start_pts is 0
4. av_rescale_q(0, x, y) returns 0
5. this value is used as denominator in division
6. Bang! -> segfault
this fix checks that max_pts > start_pts.
the fix has been tested and works.
Signed-off-by: Alfred E. Heggestad <alfred.heggestad@gmail.com>
Reviewed-by: Jeyapal, Karthick <kjeyapal@akamai.com>
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavformat/dashenc.c')
-rw-r--r-- | libavformat/dashenc.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c index f555f208a7..3b651b9514 100644 --- a/libavformat/dashenc.c +++ b/libavformat/dashenc.c @@ -1883,7 +1883,7 @@ static int dash_flush(AVFormatContext *s, int final, int stream) st->time_base, AV_TIME_BASE_Q)); - if (!os->muxer_overhead) + if (!os->muxer_overhead && os->max_pts > os->start_pts) os->muxer_overhead = ((int64_t) (range_length - os->total_pkt_size) * 8 * AV_TIME_BASE) / av_rescale_q(os->max_pts - os->start_pts, |