|
|
|
@@ -603,7 +603,8 @@ static int decode_i_mb(FourXContext *f) |
|
|
|
} |
|
|
|
|
|
|
|
static const uint8_t *read_huffman_tables(FourXContext *f, |
|
|
|
const uint8_t * const buf, int buf_size) |
|
|
|
const uint8_t * const buf, |
|
|
|
int buf_size) |
|
|
|
{ |
|
|
|
int frequency[512] = { 0 }; |
|
|
|
uint8_t flag[512]; |
|
|
|
@@ -626,6 +627,7 @@ static const uint8_t *read_huffman_tables(FourXContext *f, |
|
|
|
av_log(f->avctx, AV_LOG_ERROR, "invalid data in read_huffman_tables\n"); |
|
|
|
return NULL; |
|
|
|
} |
|
|
|
|
|
|
|
for (i = start; i <= end; i++) |
|
|
|
frequency[i] = *ptr++; |
|
|
|
start = *ptr++; |
|
|
|
@@ -779,7 +781,7 @@ static int decode_i_frame(FourXContext *f, AVFrame *frame, const uint8_t *buf, i |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
} |
|
|
|
|
|
|
|
prestream = read_huffman_tables(f, prestream, buf + length - prestream); |
|
|
|
prestream = read_huffman_tables(f, prestream, prestream_size); |
|
|
|
if (!prestream) { |
|
|
|
av_log(f->avctx, AV_LOG_ERROR, "Error reading Huffman tables.\n"); |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|