diff options
author | Janne Grunau <janne-libav@jannau.net> | 2012-09-05 22:25:48 +0400 |
---|---|---|
committer | Janne Grunau <janne-libav@jannau.net> | 2012-09-06 21:02:43 +0400 |
commit | 59383d574046616ede75e51eeb404c9eb8b56d40 (patch) | |
tree | aa33d0c703c14c8583a73b668644e86142530c3a /libavcodec/mpegvideo.c | |
parent | a224b2cb30759264147abda4aeb59de21966265c (diff) |
mpegvideo: set AVFrame fields to NULL after freeing the base memory
Prevents dangling pointers and makes access after free more obvious.
Setting AVFrame.qscale_table to NULL is required for successfully
allocating a previously freed Picture with ff_alloc_picture().
Diffstat (limited to 'libavcodec/mpegvideo.c')
-rw-r--r-- | libavcodec/mpegvideo.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index 718df8b63f..f51184f9f6 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -393,13 +393,16 @@ static void free_picture(MpegEncContext *s, Picture *pic) av_freep(&pic->mb_mean); av_freep(&pic->f.mbskip_table); av_freep(&pic->qscale_table_base); + pic->f.qscale_table = NULL; av_freep(&pic->mb_type_base); + pic->f.mb_type = NULL; av_freep(&pic->f.dct_coeff); av_freep(&pic->f.pan_scan); pic->f.mb_type = NULL; for (i = 0; i < 2; i++) { av_freep(&pic->motion_val_base[i]); av_freep(&pic->f.ref_index[i]); + pic->f.motion_val[i] = NULL; } if (pic->f.type == FF_BUFFER_TYPE_SHARED) { |