diff options
author | Jiasheng Jiang <jiashengjiangcool@gmail.com> | 2025-07-10 16:26:39 +0000 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2025-07-12 20:35:18 +0200 |
commit | 35a6de137a39f274d5e01ed0e0e6c4f04d0aaf07 (patch) | |
tree | 873fd7b848468cfed328273c6d2eb868b2c3b644 | |
parent | 0a5ae743ef56d36ca6bba500acba044bc714c770 (diff) | |
download | ffmpeg-35a6de137a39f274d5e01ed0e0e6c4f04d0aaf07.tar.gz |
Add check for the return value of av_malloc_array() and av_calloc()
to avoid potential NULL pointer dereference.
Fixes: dcfd24b10c ("avcodec/alsdec: Implement floating point sample data decoding")
Signed-off-by: Jiasheng Jiang <jiashengjiangcool@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | libavcodec/alsdec.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libavcodec/alsdec.c b/libavcodec/alsdec.c index 734eec8bf8..97b04a95f9 100644 --- a/libavcodec/alsdec.c +++ b/libavcodec/alsdec.c @@ -2119,8 +2119,8 @@ static av_cold int decode_init(AVCodecContext *avctx) ctx->nbits = av_malloc_array(ctx->cur_frame_length, sizeof(*ctx->nbits)); ctx->mlz = av_mallocz(sizeof(*ctx->mlz)); - if (!ctx->mlz || !ctx->acf || !ctx->shift_value || !ctx->last_shift_value - || !ctx->last_acf_mantissa || !ctx->raw_mantissa) { + if (!ctx->larray || !ctx->nbits || !ctx->mlz || !ctx->acf || !ctx->shift_value + || !ctx->last_shift_value || !ctx->last_acf_mantissa || !ctx->raw_mantissa) { av_log(avctx, AV_LOG_ERROR, "Allocating buffer memory failed.\n"); return AVERROR(ENOMEM); } @@ -2132,6 +2132,10 @@ static av_cold int decode_init(AVCodecContext *avctx) for (c = 0; c < channels; ++c) { ctx->raw_mantissa[c] = av_calloc(ctx->cur_frame_length, sizeof(**ctx->raw_mantissa)); + if (!ctx->raw_mantissa[c]) { + av_log(avctx, AV_LOG_ERROR, "Allocating buffer memory failed.\n"); + return AVERROR(ENOMEM); + } } } |