summaryrefslogtreecommitdiff
path: root/chromium/third_party/ffmpeg/libavformat/genh.c
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/ffmpeg/libavformat/genh.c')
-rw-r--r--chromium/third_party/ffmpeg/libavformat/genh.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/chromium/third_party/ffmpeg/libavformat/genh.c b/chromium/third_party/ffmpeg/libavformat/genh.c
index 61adf499647..698104a9d61 100644
--- a/chromium/third_party/ffmpeg/libavformat/genh.c
+++ b/chromium/third_party/ffmpeg/libavformat/genh.c
@@ -87,7 +87,9 @@ static int genh_read_header(AVFormatContext *s)
case 5: st->codecpar->codec_id = st->codecpar->block_align > 0 ?
AV_CODEC_ID_PCM_S8_PLANAR :
AV_CODEC_ID_PCM_S8; break;
- case 6: st->codecpar->codec_id = AV_CODEC_ID_SDX2_DPCM; break;
+ case 6: if (st->codecpar->block_align > INT_MAX/1024)
+ return AVERROR_INVALIDDATA;
+ st->codecpar->codec_id = AV_CODEC_ID_SDX2_DPCM; break;
case 7: ret = ff_alloc_extradata(st->codecpar, 2);
if (ret < 0)
return ret;
@@ -144,6 +146,9 @@ static int genh_read_header(AVFormatContext *s)
}
}
+ if (st->codecpar->block_align <= 0)
+ return AVERROR_INVALIDDATA;
+
avio_skip(s->pb, start_offset - avio_tell(s->pb));
avpriv_set_pts_info(st, 64, 1, st->codecpar->sample_rate);