[FFmpeg-devel] [PATCH] avcodec/vp56: use av_reallocp_array() and check if allocation fail

Paul B Mahol onemda at gmail.com
Mon Sep 9 23:32:48 CEST 2013


On 9/9/13, Michael Niedermayer <michaelni at gmx.at> wrote:
> On Mon, Sep 09, 2013 at 02:49:47PM +0000, Paul B Mahol wrote:
>> Signed-off-by: Paul B Mahol <onemda at gmail.com>
>> ---
>>  libavcodec/vp56.c | 10 ++++++----
>>  1 file changed, 6 insertions(+), 4 deletions(-)
>>
>> diff --git a/libavcodec/vp56.c b/libavcodec/vp56.c
>> index 38f0e08..b4920d8 100644
>> --- a/libavcodec/vp56.c
>> +++ b/libavcodec/vp56.c
>> @@ -475,12 +475,14 @@ static int vp56_size_changed(VP56Context *s)
>>          return -1;
>>      }
>>
>> -    s->above_blocks = av_realloc(s->above_blocks,
>> -                                 (4*s->mb_width+6) *
>> sizeof(*s->above_blocks));
>> -    s->macroblocks = av_realloc(s->macroblocks,
>> -
>> s->mb_width*s->mb_height*sizeof(*s->macroblocks));
>> +    av_reallocp_array(&s->above_blocks, 4*s->mb_width+6,
>> +                      sizeof(*s->above_blocks));
>> +    av_reallocp_array(&s->macroblocks, s->mb_width*s->mb_height,
>> +                      sizeof(*s->macroblocks));
>
>
>
>>      av_free(s->edge_emu_buffer_alloc);
>>      s->edge_emu_buffer_alloc = av_malloc(16*stride);
>> +    if (!s->above_blocks || !s->macroblocks ||
>> !s->edge_emu_buffer_alloc)
>> +        return AVERROR(ENOMEM);
>>      s->edge_emu_buffer = s->edge_emu_buffer_alloc;
>
> doesnt this leave edge_emu_buffer pointing to freed memory in the
> error case ?

It does leave (..) changed to clear it anyway.


More information about the ffmpeg-devel mailing list