[FFmpeg-devel] [PATCH 3/3] avformat/mxfdec: Fix memleak upon repeating tags

Tomas Härdin tjoppen at acc.umu.se
Wed Jul 22 15:34:09 EEST 2020


mån 2020-07-20 klockan 08:15 +0200 skrev Andreas Rheinhardt:
> When parsing MXF encountering some tags leads to allocations. And when
> these tags were encountered repeatedly, this could lead to memleaks,
> because the pointer to the old data got simply overwritten with a
> pointer to the new data (or to NULL on allocation failure). This has
> been fixed.
> 
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---
>  libavformat/mxfdec.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
> index 3016885e75..f0975f409e 100644
> --- a/libavformat/mxfdec.c
> +++ b/libavformat/mxfdec.c
> @@ -850,6 +850,7 @@ static int mxf_read_cryptographic_context(void *arg, AVIOContext *pb, int tag, i
>  static int mxf_read_strong_ref_array(AVIOContext *pb, UID **refs, int *count)
>  {
>      *count = avio_rb32(pb);
> +    av_free(*refs);
>      *refs = av_calloc(*count, sizeof(UID));
>      if (!*refs) {
>          *count = 0;
> @@ -903,10 +904,8 @@ static int mxf_read_content_storage(void *arg, AVIOContext *pb, int tag, int siz
>      case 0x1901:
>          if (mxf->packages_refs)
>              av_log(mxf->fc, AV_LOG_VERBOSE, "Multiple packages_refs\n");
> -        av_free(mxf->packages_refs);
>          return mxf_read_strong_ref_array(pb, &mxf->packages_refs, &mxf->packages_count);
>      case 0x1902:
> -        av_free(mxf->essence_container_data_refs);

Good catch. Looks OK

/Tomas



More information about the ffmpeg-devel mailing list