diff options
author | Paul B Mahol <onemda@gmail.com> | 2013-06-30 16:58:13 +0000 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2013-06-30 19:43:55 +0000 |
commit | 84343dd9d3b8e19c95c0f641a9f97915efec0633 (patch) | |
tree | 006a56823cb1c2aa1d18b1ab6ffe5eac6a741dd7 | |
parent | b00e56bec5f8aea788f3565cec09bcfea0aa4a53 (diff) | |
download | ffmpeg-84343dd9d3b8e19c95c0f641a9f97915efec0633.tar.gz |
indeo3: check return values of av_malloc()
Signed-off-by: Paul B Mahol <onemda@gmail.com>
-rw-r--r-- | libavcodec/indeo3.c | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/libavcodec/indeo3.c b/libavcodec/indeo3.c index a6658b717d..7959f91b4f 100644 --- a/libavcodec/indeo3.c +++ b/libavcodec/indeo3.c @@ -148,6 +148,20 @@ static av_cold void build_requant_tab(void) } +static av_cold void free_frame_buffers(Indeo3DecodeContext *ctx) +{ + int p; + + ctx->width = ctx->height = 0; + + for (p = 0; p < 3; p++) { + av_freep(&ctx->planes[p].buffers[0]); + av_freep(&ctx->planes[p].buffers[1]); + ctx->planes[p].pixels[0] = ctx->planes[p].pixels[1] = 0; + } +} + + static av_cold int allocate_frame_buffers(Indeo3DecodeContext *ctx, AVCodecContext *avctx, int luma_width, int luma_height) { @@ -188,6 +202,11 @@ static av_cold int allocate_frame_buffers(Indeo3DecodeContext *ctx, ctx->planes[p].buffers[0] = av_malloc(!p ? luma_size : chroma_size); ctx->planes[p].buffers[1] = av_malloc(!p ? luma_size : chroma_size); + if (!ctx->planes[p].buffers[0] || !ctx->planes[p].buffers[1]) { + free_frame_buffers(ctx); + return AVERROR(ENOMEM); + } + /* fill the INTRA prediction lines with the middle pixel value = 64 */ memset(ctx->planes[p].buffers[0], 0x40, ctx->planes[p].pitch); memset(ctx->planes[p].buffers[1], 0x40, ctx->planes[p].pitch); @@ -202,22 +221,6 @@ static av_cold int allocate_frame_buffers(Indeo3DecodeContext *ctx, return 0; } - -static av_cold void free_frame_buffers(Indeo3DecodeContext *ctx) -{ - int p; - - ctx->width= - ctx->height= 0; - - for (p = 0; p < 3; p++) { - av_freep(&ctx->planes[p].buffers[0]); - av_freep(&ctx->planes[p].buffers[1]); - ctx->planes[p].pixels[0] = ctx->planes[p].pixels[1] = 0; - } -} - - /** * Copy pixels of the cell(x + mv_x, y + mv_y) from the previous frame into * the cell(x, y) in the current frame. |