smacker: more complete vlc length check, fixes out of array read

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
pull/8/head
Michael Niedermayer 12 years ago
parent 50cbe09d8c
commit 2c69fcc2ff
  1. 2
      libavcodec/smacker.c

@ -96,7 +96,7 @@ enum SmkBlockTypes {
*/ */
static int smacker_decode_tree(GetBitContext *gb, HuffContext *hc, uint32_t prefix, int length) static int smacker_decode_tree(GetBitContext *gb, HuffContext *hc, uint32_t prefix, int length)
{ {
if(length > 32) { if(length > 32 || length > 3*SMKTREE_BITS) {
av_log(NULL, AV_LOG_ERROR, "length too long\n"); av_log(NULL, AV_LOG_ERROR, "length too long\n");
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
} }

Loading…
Cancel
Save