avformat/tty: Check avio_size()

Fixes: CID1220824 Overflowed constant

Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
release/7.1
Michael Niedermayer 6 months ago
parent 124a97dd8b
commit 41745e550a
No known key found for this signature in database
GPG Key ID: B18E8928B3948D64
  1. 13
      libavformat/tty.c

@ -123,13 +123,16 @@ static int read_header(AVFormatContext *avctx)
s->chars_per_frame = FFMAX(av_q2d(st->time_base)*s->chars_per_frame, 1); s->chars_per_frame = FFMAX(av_q2d(st->time_base)*s->chars_per_frame, 1);
if (avctx->pb->seekable & AVIO_SEEKABLE_NORMAL) { if (avctx->pb->seekable & AVIO_SEEKABLE_NORMAL) {
s->fsize = avio_size(avctx->pb); int64_t fsize = avio_size(avctx->pb);
st->duration = (s->fsize + s->chars_per_frame - 1) / s->chars_per_frame; if (fsize > 0) {
s->fsize = fsize;
st->duration = (s->fsize + s->chars_per_frame - 1) / s->chars_per_frame;
if (ff_sauce_read(avctx, &s->fsize, 0, 0) < 0) if (ff_sauce_read(avctx, &s->fsize, 0, 0) < 0)
efi_read(avctx, s->fsize - 51); efi_read(avctx, s->fsize - 51);
avio_seek(avctx->pb, 0, SEEK_SET); avio_seek(avctx->pb, 0, SEEK_SET);
}
} }
fail: fail:

Loading…
Cancel
Save