aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2013-06-30 16:58:13 +0000
committerPaul B Mahol <onemda@gmail.com>2013-06-30 19:43:55 +0000
commit84343dd9d3b8e19c95c0f641a9f97915efec0633 (patch)
tree006a56823cb1c2aa1d18b1ab6ffe5eac6a741dd7
parentb00e56bec5f8aea788f3565cec09bcfea0aa4a53 (diff)
downloadffmpeg-84343dd9d3b8e19c95c0f641a9f97915efec0633.tar.gz
indeo3: check return values of av_malloc()
Signed-off-by: Paul B Mahol <onemda@gmail.com>
-rw-r--r--libavcodec/indeo3.c35
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.