Merge commit '0679cec6e8802643bbe6d5f68ca1110a7d3171da'
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 12 Sep 2013 10:45:29 +0000 (12:45 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 12 Sep 2013 10:51:07 +0000 (12:51 +0200)
* commit '0679cec6e8802643bbe6d5f68ca1110a7d3171da':
  smacker: Make sure we don't fill in huffman codes out of range

Conflicts:
libavcodec/smacker.c

See: 1285baaab550e3e761590ef6dfb1d9bd9d1332e4
the added test is redundant but will be used after future refactoring

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/smacker.c

@@@ -279,11 -268,12 +279,17 @@@ static int smacker_decode_header_tree(S
      if(ctx.last[0] == -1) ctx.last[0] = huff.current++;
      if(ctx.last[1] == -1) ctx.last[1] = huff.current++;
      if(ctx.last[2] == -1) ctx.last[2] = huff.current++;
 +    if(huff.current > huff.length){
 +        ctx.last[0] = ctx.last[1] = ctx.last[2] = 1;
 +        av_log(smk->avctx, AV_LOG_ERROR, "bigtree damaged\n");
 +        return AVERROR_INVALIDDATA;
 +    }
+     if (ctx.last[0] >= huff.length ||
+         ctx.last[1] >= huff.length ||
+         ctx.last[2] >= huff.length) {
+         av_log(smk->avctx, AV_LOG_ERROR, "Huffman codes out of range\n");
+         err = AVERROR_INVALIDDATA;
+     }
  
      *recodes = huff.values;