diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2023-12-26 03:51:23 +0100 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2024-03-26 01:19:17 +0100 |
commit | dd733b2be472cea766c62984237533b239e9a93d (patch) | |
tree | d126a7022f8732773f2e7db6e7f97c6d9019e423 | |
parent | b54c9a9c8f44a9272dc0ee3c9f11ce54cba74008 (diff) | |
download | ffmpeg-dd733b2be472cea766c62984237533b239e9a93d.tar.gz |
avformat/concatdec: clip outpoint - inpoint overflow in get_best_effort_duration()
An alternative would be to limit all time/duration fields to below 64bit
Fixes: signed integer overflow: -93000000 - 9223372036839000000 cannot be represented in type 'long long'
Fixes: 64546/clusterfuzz-testcase-minimized-ffmpeg_dem_CONCAT_fuzzer-5110813828186112
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | libavformat/concatdec.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c index ac541a592f..ca3a0f6369 100644 --- a/libavformat/concatdec.c +++ b/libavformat/concatdec.c @@ -323,7 +323,7 @@ static int64_t get_best_effort_duration(ConcatFile *file, AVFormatContext *avf) if (file->user_duration != AV_NOPTS_VALUE) return file->user_duration; if (file->outpoint != AV_NOPTS_VALUE) - return file->outpoint - file->file_inpoint; + return av_sat_sub64(file->outpoint, file->file_inpoint); if (avf->duration > 0) return avf->duration - (file->file_inpoint - file->file_start_time); if (file->next_dts != AV_NOPTS_VALUE) |