summaryrefslogtreecommitdiff
path: root/libavformat/idroqdec.c
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2013-09-16 14:53:15 +0300
committerMartin Storsjö <martin@martin.st>2013-09-19 11:09:04 +0300
commitbcbe4f3ceb6ee0210d3a401963518906c8b9b230 (patch)
tree51d994201437ec23ca094e29379662fd29b075cb /libavformat/idroqdec.c
parent5372cda67109848d22146289e401669266217e80 (diff)
idroqdec: Make sure a video stream has been allocated before returning packets
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC: libav-stable@libav.org Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavformat/idroqdec.c')
-rw-r--r--libavformat/idroqdec.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/libavformat/idroqdec.c b/libavformat/idroqdec.c
index eeaafec5aa..82eff24e94 100644
--- a/libavformat/idroqdec.c
+++ b/libavformat/idroqdec.c
@@ -142,6 +142,8 @@ static int roq_read_packet(AVFormatContext *s,
break;
case RoQ_QUAD_CODEBOOK:
+ if (roq->video_stream_index < 0)
+ return AVERROR_INVALIDDATA;
/* packet needs to contain both this codebook and next VQ chunk */
codebook_offset = avio_tell(pb) - RoQ_CHUNK_PREAMBLE_SIZE;
codebook_size = chunk_size;
@@ -191,6 +193,11 @@ static int roq_read_packet(AVFormatContext *s,
st->codec->block_align = st->codec->channels * st->codec->bits_per_coded_sample;
}
case RoQ_QUAD_VQ:
+ if (chunk_type == RoQ_QUAD_VQ) {
+ if (roq->video_stream_index < 0)
+ return AVERROR_INVALIDDATA;
+ }
+
/* load up the packet */
if (av_new_packet(pkt, chunk_size + RoQ_CHUNK_PREAMBLE_SIZE))
return AVERROR(EIO);