[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