comparison huffyuv.c @ 11612:90b6d031c821 libavcodec

Extradata length checks for Huffyuv. Patch by Michael Kaufmann hallo $(name) dash $(surname) ch
author benoit
date Mon, 12 Apr 2010 16:16:43 +0000
parents 8a4984c5cacc
children 215dfe2dbfe1
comparison
equal deleted inserted replaced
11611:a207cc043de8 11612:90b6d031c821
450 s->version=0; 450 s->version=0;
451 451
452 if(s->version==2){ 452 if(s->version==2){
453 int method, interlace; 453 int method, interlace;
454 454
455 if (avctx->extradata_size < 4)
456 return -1;
457
455 method= ((uint8_t*)avctx->extradata)[0]; 458 method= ((uint8_t*)avctx->extradata)[0];
456 s->decorrelate= method&64 ? 1 : 0; 459 s->decorrelate= method&64 ? 1 : 0;
457 s->predictor= method&63; 460 s->predictor= method&63;
458 s->bitstream_bpp= ((uint8_t*)avctx->extradata)[1]; 461 s->bitstream_bpp= ((uint8_t*)avctx->extradata)[1];
459 if(s->bitstream_bpp==0) 462 if(s->bitstream_bpp==0)
460 s->bitstream_bpp= avctx->bits_per_coded_sample&~7; 463 s->bitstream_bpp= avctx->bits_per_coded_sample&~7;
461 interlace= (((uint8_t*)avctx->extradata)[2] & 0x30) >> 4; 464 interlace= (((uint8_t*)avctx->extradata)[2] & 0x30) >> 4;
462 s->interlaced= (interlace==1) ? 1 : (interlace==2) ? 0 : s->interlaced; 465 s->interlaced= (interlace==1) ? 1 : (interlace==2) ? 0 : s->interlaced;
463 s->context= ((uint8_t*)avctx->extradata)[2] & 0x40 ? 1 : 0; 466 s->context= ((uint8_t*)avctx->extradata)[2] & 0x40 ? 1 : 0;
464 467
465 if(read_huffman_tables(s, ((uint8_t*)avctx->extradata)+4, avctx->extradata_size) < 0) 468 if(read_huffman_tables(s, ((uint8_t*)avctx->extradata)+4, avctx->extradata_size-4) < 0)
466 return -1; 469 return -1;
467 }else{ 470 }else{
468 switch(avctx->bits_per_coded_sample&7){ 471 switch(avctx->bits_per_coded_sample&7){
469 case 1: 472 case 1:
470 s->predictor= LEFT; 473 s->predictor= LEFT;