mirror of https://git.ffmpeg.org/ffmpeg.git
avformat/realtextdec: Check the pts difference before using it for the duration computation
Fixes: signed integer overflow: 5404200000 - -9223372031709351616 cannot be represented in type 'long'
Fixes: 29102/clusterfuzz-testcase-minimized-ffmpeg_dem_REALTEXT_fuzzer-6737340551790592
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit fe12aa6890
)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
7da58f8fe7
commit
8b8e5ccdc2
|
@ -111,10 +111,11 @@ static int realtext_read_header(AVFormatContext *s)
|
|||
if (!merge) {
|
||||
const char *begin = ff_smil_get_attr_ptr(buf.str, "begin");
|
||||
const char *end = ff_smil_get_attr_ptr(buf.str, "end");
|
||||
int64_t endi = end ? read_ts(end) : 0;
|
||||
|
||||
sub->pos = pos;
|
||||
sub->pts = begin ? read_ts(begin) : 0;
|
||||
sub->duration = end ? (read_ts(end) - sub->pts) : duration;
|
||||
sub->duration = (end && endi > sub->pts && endi - (uint64_t)sub->pts <= INT64_MAX) ? endi - sub->pts : duration;
|
||||
}
|
||||
}
|
||||
av_bprint_clear(&buf);
|
||||
|
|
Loading…
Reference in New Issue