From c89e428ed8c2c31396af2d18cab4342b7d82958f Mon Sep 17 00:00:00 2001 From: Jordi Ortiz Date: Tue, 22 May 2012 13:18:17 +0200 Subject: [PATCH] dwt: check malloc calls Signed-off-by: Diego Biurrun --- libavcodec/dwt.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/libavcodec/dwt.c b/libavcodec/dwt.c index f9577fd1bd..675644dbe6 100644 --- a/libavcodec/dwt.c +++ b/libavcodec/dwt.c @@ -33,10 +33,24 @@ void ff_slice_buffer_init(slice_buffer *buf, int line_count, buf->line_width = line_width; buf->data_count = max_allocated_lines; buf->line = av_mallocz(sizeof(IDWTELEM *) * line_count); + if (!buf->line) + return AVERROR(ENOMEM); buf->data_stack = av_malloc(sizeof(IDWTELEM *) * max_allocated_lines); + if (!buf->data_stack) { + av_free(buf->line); + return AVERROR(ENOMEM); + } - for (i = 0; i < max_allocated_lines; i++) + for (i = 0; i < max_allocated_lines; i++) { buf->data_stack[i] = av_malloc(sizeof(IDWTELEM) * line_width); + if (!buf->data_stack[i]) { + for (i--; i >=0; i--) + av_free(buf->data_stack[i]); + av_free(buf->data_stack); + av_free(buf->line); + return AVERROR(ENOMEM); + } + } buf->data_stack_top = max_allocated_lines - 1; } -- 2.11.0