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> (cherry picked from commit bcbe4f3ceb6ee0210d3a401963518906c8b9b230) Signed-off-by: Luca Barbato <lu_zero@gentoo.org> (cherry picked from commit de75bc01cda53acfbd9f901639695ade8e650c43)
This commit is contained in:
parent
3b169044ca
commit
75dabbff8b
@ -142,6 +142,8 @@ static int roq_read_packet(AVFormatContext *s,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case RoQ_QUAD_CODEBOOK:
|
case RoQ_QUAD_CODEBOOK:
|
||||||
|
if (roq->video_stream_index < 0)
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
/* packet needs to contain both this codebook and next VQ chunk */
|
/* packet needs to contain both this codebook and next VQ chunk */
|
||||||
codebook_offset = avio_tell(pb) - RoQ_CHUNK_PREAMBLE_SIZE;
|
codebook_offset = avio_tell(pb) - RoQ_CHUNK_PREAMBLE_SIZE;
|
||||||
codebook_size = chunk_size;
|
codebook_size = chunk_size;
|
||||||
@ -184,6 +186,11 @@ static int roq_read_packet(AVFormatContext *s,
|
|||||||
st->codec->block_align = st->codec->channels * st->codec->bits_per_coded_sample;
|
st->codec->block_align = st->codec->channels * st->codec->bits_per_coded_sample;
|
||||||
}
|
}
|
||||||
case RoQ_QUAD_VQ:
|
case RoQ_QUAD_VQ:
|
||||||
|
if (chunk_type == RoQ_QUAD_VQ) {
|
||||||
|
if (roq->video_stream_index < 0)
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
}
|
||||||
|
|
||||||
/* load up the packet */
|
/* load up the packet */
|
||||||
if (av_new_packet(pkt, chunk_size + RoQ_CHUNK_PREAMBLE_SIZE))
|
if (av_new_packet(pkt, chunk_size + RoQ_CHUNK_PREAMBLE_SIZE))
|
||||||
return AVERROR(EIO);
|
return AVERROR(EIO);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user