summaryrefslogtreecommitdiff
path: root/libavcodec/alac.c
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2013-09-03 11:54:03 +0300
committerMartin Storsjö <martin@martin.st>2013-09-03 22:56:36 +0300
commitf7c5883126f9440547933eefcf000aa78af4821c (patch)
treece5af5e84b918905fb14476eb8d7b638ff25e71d /libavcodec/alac.c
parent0fbda03e5cfce9d37a263abd08947e5a64ed8ee9 (diff)
alac: Limit max_samples_per_frame
Otherwise buffer size calculations in allocate_buffers could overflow later, making the code think a large enough buffer actually was allocated. Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC: libav-stable@libav.org Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavcodec/alac.c')
-rw-r--r--libavcodec/alac.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libavcodec/alac.c b/libavcodec/alac.c
index 9ef0653cb6..d643dd3eab 100644
--- a/libavcodec/alac.c
+++ b/libavcodec/alac.c
@@ -494,7 +494,8 @@ static int alac_set_info(ALACContext *alac)
bytestream2_skipu(&gb, 12); // size:4, alac:4, version:4
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",
alac->max_samples_per_frame);
return AVERROR_INVALIDDATA;