Commit 642207d2 authored by Michael Niedermayer's avatar Michael Niedermayer

Merge commit 'f7c58831'

* commit 'f7c58831':
  alac: Limit max_samples_per_frame

See: 3920d138Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents 54d628a5 f7c58831
...@@ -511,11 +511,7 @@ static av_cold int alac_decode_close(AVCodecContext *avctx) ...@@ -511,11 +511,7 @@ static av_cold int alac_decode_close(AVCodecContext *avctx)
static int allocate_buffers(ALACContext *alac) static int allocate_buffers(ALACContext *alac)
{ {
int ch; int ch;
int buf_size; int buf_size = alac->max_samples_per_frame * sizeof(int32_t);
if (alac->max_samples_per_frame > INT_MAX / sizeof(int32_t))
goto buf_alloc_fail;
buf_size = alac->max_samples_per_frame * sizeof(int32_t);
for (ch = 0; ch < FFMIN(alac->channels, 2); ch++) { for (ch = 0; ch < FFMIN(alac->channels, 2); ch++) {
FF_ALLOC_OR_GOTO(alac->avctx, alac->predict_error_buffer[ch], FF_ALLOC_OR_GOTO(alac->avctx, alac->predict_error_buffer[ch],
...@@ -546,7 +542,8 @@ static int alac_set_info(ALACContext *alac) ...@@ -546,7 +542,8 @@ static int alac_set_info(ALACContext *alac)
bytestream2_skipu(&gb, 12); // size:4, alac:4, version:4 bytestream2_skipu(&gb, 12); // size:4, alac:4, version:4
alac->max_samples_per_frame = bytestream2_get_be32u(&gb); alac->max_samples_per_frame = bytestream2_get_be32u(&gb);
if (!alac->max_samples_per_frame || alac->max_samples_per_frame > INT_MAX) { if (!alac->max_samples_per_frame ||
alac->max_samples_per_frame > INT_MAX / sizeof(int32_t)) {
av_log(alac->avctx, AV_LOG_ERROR, "max samples per frame invalid: %u\n", av_log(alac->avctx, AV_LOG_ERROR, "max samples per frame invalid: %u\n",
alac->max_samples_per_frame); alac->max_samples_per_frame);
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment