avcodec/magicyuv: Improve overread check when parsing Huffman tables

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
Andreas Rheinhardt 2020-09-23 05:42:31 +02:00
parent 94dc3385e4
commit 85737a4d76
1 changed files with 6 additions and 1 deletions

View File

@ -394,8 +394,13 @@ static int build_huffman(AVCodecContext *avctx, GetBitContext *gbit, int max)
while (get_bits_left(gbit) >= 8) {
int b = get_bits(gbit, 1);
int x = get_bits(gbit, 7);
int l = get_bitsz(gbit, b * 8) + 1;
int l = 1;
if (b) {
if (get_bits_left(gbit) < 8)
break;
l += get_bits(gbit, 8);
}
k = j + l;
if (k > max || x == 0 || x > 32) {
av_log(avctx, AV_LOG_ERROR, "Invalid Huffman codes\n");