avcodec/dnxhdenc: fix possible out of bound writes for big w/h

It was caused by integer overflows.
release/5.1
Paul B Mahol 3 years ago
parent f497731260
commit 37480b1b85
  1. 3
      libavcodec/dnxhdenc.c
  2. 2
      libavcodec/dnxhdenc.h

@ -1228,6 +1228,9 @@ static int dnxhd_encode_fast(AVCodecContext *avctx, DNXHDEncContext *ctx)
ctx->mb_qscale[mb] = ctx->qscale + 1; ctx->mb_qscale[mb] = ctx->qscale + 1;
ctx->mb_bits[mb] = ctx->mb_rc[rc + ctx->m.mb_num].bits; ctx->mb_bits[mb] = ctx->mb_rc[rc + ctx->m.mb_num].bits;
} }
if (max_bits > ctx->frame_bits)
return AVERROR(EINVAL);
} }
return 0; return 0;
} }

@ -34,7 +34,7 @@
#include "dnxhddata.h" #include "dnxhddata.h"
typedef struct RCCMPEntry { typedef struct RCCMPEntry {
uint16_t mb; uint32_t mb;
int value; int value;
} RCCMPEntry; } RCCMPEntry;

Loading…
Cancel
Save