mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
avformat/filmstripdec: Fix several integer overflows
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
76b9043e90
commit
9612dcd6b2
@ -67,6 +67,12 @@ static int read_header(AVFormatContext *s)
|
||||
st->codec->width = avio_rb16(pb);
|
||||
st->codec->height = avio_rb16(pb);
|
||||
film->leading = avio_rb16(pb);
|
||||
|
||||
if (st->codec->width * 4LL * st->codec->height >= INT_MAX) {
|
||||
av_log(s, AV_LOG_ERROR, "dimensions too large\n");
|
||||
return AVERROR_PATCHWELCOME;
|
||||
}
|
||||
|
||||
avpriv_set_pts_info(st, 64, 1, avio_rb16(pb));
|
||||
|
||||
avio_seek(pb, 0, SEEK_SET);
|
||||
@ -82,7 +88,7 @@ static int read_packet(AVFormatContext *s,
|
||||
|
||||
if (avio_feof(s->pb))
|
||||
return AVERROR(EIO);
|
||||
pkt->dts = avio_tell(s->pb) / (st->codec->width * (st->codec->height + film->leading) * 4);
|
||||
pkt->dts = avio_tell(s->pb) / (st->codec->width * (int64_t)(st->codec->height + film->leading) * 4);
|
||||
pkt->size = av_get_packet(s->pb, pkt, st->codec->width * st->codec->height * 4);
|
||||
avio_skip(s->pb, st->codec->width * (int64_t) film->leading * 4);
|
||||
if (pkt->size < 0)
|
||||
|
Loading…
Reference in New Issue
Block a user