mirror of https://git.ffmpeg.org/ffmpeg.git
more error checks for the sequence header
Originally committed as revision 2788 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
69dde1ad36
commit
e6dc9c6f99
|
@ -2373,6 +2373,10 @@ static int mpeg1_decode_sequence(AVCodecContext *avctx,
|
||||||
if (get_bits1(&s->gb)) {
|
if (get_bits1(&s->gb)) {
|
||||||
for(i=0;i<64;i++) {
|
for(i=0;i<64;i++) {
|
||||||
v = get_bits(&s->gb, 8);
|
v = get_bits(&s->gb, 8);
|
||||||
|
if(v==0){
|
||||||
|
av_log(s->avctx, AV_LOG_ERROR, "intra matrix damaged\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
j = s->intra_scantable.permutated[i];
|
j = s->intra_scantable.permutated[i];
|
||||||
s->intra_matrix[j] = v;
|
s->intra_matrix[j] = v;
|
||||||
s->chroma_intra_matrix[j] = v;
|
s->chroma_intra_matrix[j] = v;
|
||||||
|
@ -2394,6 +2398,10 @@ static int mpeg1_decode_sequence(AVCodecContext *avctx,
|
||||||
if (get_bits1(&s->gb)) {
|
if (get_bits1(&s->gb)) {
|
||||||
for(i=0;i<64;i++) {
|
for(i=0;i<64;i++) {
|
||||||
v = get_bits(&s->gb, 8);
|
v = get_bits(&s->gb, 8);
|
||||||
|
if(v==0){
|
||||||
|
av_log(s->avctx, AV_LOG_ERROR, "inter matrix damaged\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
j = s->intra_scantable.permutated[i];
|
j = s->intra_scantable.permutated[i];
|
||||||
s->inter_matrix[j] = v;
|
s->inter_matrix[j] = v;
|
||||||
s->chroma_inter_matrix[j] = v;
|
s->chroma_inter_matrix[j] = v;
|
||||||
|
@ -2413,6 +2421,11 @@ static int mpeg1_decode_sequence(AVCodecContext *avctx,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(show_bits(&s->gb, 23) != 0){
|
||||||
|
av_log(s->avctx, AV_LOG_ERROR, "sequence header damaged\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/* we set mpeg2 parameters so that it emulates mpeg1 */
|
/* we set mpeg2 parameters so that it emulates mpeg1 */
|
||||||
s->progressive_sequence = 1;
|
s->progressive_sequence = 1;
|
||||||
s->progressive_frame = 1;
|
s->progressive_frame = 1;
|
||||||
|
|
Loading…
Reference in New Issue