[FFmpeg-devel] [PATCH 2/2] lavc/options: fix leaks in avcodec_copy_context

Lukasz Marek lukasz.m.luki2 at gmail.com
Mon Nov 24 06:13:47 CET 2014


On 24-Nov-2014 5:17 am, "Lukasz Marek" <lukasz.m.luki2 at gmail.com> wrote:
>
> Signed-off-by: Lukasz Marek <lukasz.m.luki2 at gmail.com>
> ---
>  libavcodec/options.c | 23 +++++++++++------------
>  1 file changed, 11 insertions(+), 12 deletions(-)
>
> diff --git a/libavcodec/options.c b/libavcodec/options.c
> index 7f9fb07..8ba997c 100644
> --- a/libavcodec/options.c
> +++ b/libavcodec/options.c
> @@ -190,6 +190,11 @@ int avcodec_copy_context(AVCodecContext *dest, const
AVCodecContext *src)
>      }
>
>      av_opt_free(dest);
> +    av_freep(&dest->rc_override);
> +    av_freep(&dest->intra_matrix);
> +    av_freep(&dest->inter_matrix);
> +    av_freep(&dest->extradata);
> +    av_freep(&dest->subtitle_header);
>
>      memcpy(dest, src, sizeof(*dest));
>      av_opt_copy(dest, src);
> @@ -205,13 +210,7 @@ int avcodec_copy_context(AVCodecContext *dest, const
AVCodecContext *src)
>      dest->slice_offset    = NULL;
>      dest->hwaccel         = NULL;
>      dest->internal        = NULL;
> -
> -    /* reallocate values that should be allocated separately */
> -    dest->extradata       = NULL;
> -    dest->intra_matrix    = NULL;
> -    dest->inter_matrix    = NULL;
> -    dest->rc_override     = NULL;
> -    dest->subtitle_header = NULL;

This assignments should stay in case of copy error below.


More information about the ffmpeg-devel mailing list