On Fri, Oct 11, 2013 at 11:58:03AM +0200, Luca Barbato wrote:
> On 11/10/13 11:51, Kostya Shishkov wrote:
> > On Fri, Oct 11, 2013 at 11:35:21AM +0200, Luca Barbato wrote:
> >> Sample-Id: 00000262-google
> >> Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
> >> CC: [email protected]
> >> ---
> >>  libavcodec/indeo4.c | 19 ++++++++++---------
> >>  1 file changed, 10 insertions(+), 9 deletions(-)
> >>
> >> diff --git a/libavcodec/indeo4.c b/libavcodec/indeo4.c
> >> index 3c749a9..b99c08e 100644
> >> --- a/libavcodec/indeo4.c
> >> +++ b/libavcodec/indeo4.c
> >> @@ -370,15 +370,6 @@ static int decode_band_hdr(IVI45DecContext *ctx, 
> >> IVIBandDesc *band,
> >>              band->scan = scan_index_to_tab[scan_indx];
> >>  
> >>              band->quant_mat = get_bits(&ctx->gb, 5);
> >> -            if (band->quant_mat == 31) {
> >> -                av_log(avctx, AV_LOG_ERROR, "Custom quant matrix 
> >> encountered!\n");
> >> -                return AVERROR_INVALIDDATA;
> >> -            }
> >> -            if (band->quant_mat >= FF_ARRAY_ELEMS(quant_index_to_tab)) {
> >> -                avpriv_request_sample(avctx, "Quantization matrix %d",
> >> -                                      band->quant_mat);
> >> -                return AVERROR_INVALIDDATA;
> >> -            }
> >>          } else {
> >>              if (old_blk_size != band->blk_size) {
> >>                  av_log(avctx, AV_LOG_ERROR,
> >> @@ -416,6 +407,16 @@ static int decode_band_hdr(IVI45DecContext *ctx, 
> >> IVIBandDesc *band,
> >>      }
> >>  
> >>      if (band->blk_size == 8) {
> >> +        if (band->quant_mat == 31) {
> >> +            av_log(avctx, AV_LOG_ERROR, "Custom quant matrix 
> >> encountered!\n");
> >> +            return AVERROR_INVALIDDATA;
> >> +        }
> >> +
> >> +        if (band->quant_mat >= FF_ARRAY_ELEMS(quant_index_to_tab)) {
> >> +            avpriv_request_sample(avctx, "Quantization matrix %d",
> >> +                                  band->quant_mat);
> >> +            return AVERROR_INVALIDDATA;
> >> +        }
> >>          band->intra_base = 
> >> &ivi4_quant_8x8_intra[quant_index_to_tab[band->quant_mat]][0];
> >>          band->inter_base = 
> >> &ivi4_quant_8x8_inter[quant_index_to_tab[band->quant_mat]][0];
> >>      } else {
> >> -- 
> > 
> > why?
> 
> Because quant_mat can be inherited and the checks before were in the
> setting block. Alternatively on error I can set it to -1 and error out
> checking for quant_mat < -1 there.

that would be proper IMO
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to