[FFmpeg-devel] [PATCH 2/3] avformat/mxfdec: Fix memleak when parsing tag fails
Tomas Härdin
tjoppen at acc.umu.se
Wed Jul 22 15:39:13 EEST 2020
mån 2020-07-20 klockan 08:15 +0200 skrev Andreas Rheinhardt:
> --- a/libavformat/mxfdec.c
> +++ b/libavformat/mxfdec.c
> @@ -2714,6 +2714,7 @@ static const MXFMetadataReadTableEntry mxf_metadata_read_table[] = {
>
> static int mxf_metadataset_init(MXFMetadataSet *ctx, enum MXFMetadataSetType type)
> {
> + ctx->type = type;
> switch (type){
> case MultipleDescriptor:
> case Descriptor:
> @@ -2734,7 +2735,8 @@ static int mxf_read_local_tags(MXFContext *mxf, KLVPacket *klv, MXFMetadataReadF
>
> if (!ctx)
> return AVERROR(ENOMEM);
> - mxf_metadataset_init(ctx, type);
> + if (ctx_size)
> + mxf_metadataset_init(ctx, type);
> while (avio_tell(pb) + 4 < klv_end && !avio_feof(pb)) {
> int ret;
> int tag = avio_rb16(pb);
> @@ -2770,7 +2772,6 @@ static int mxf_read_local_tags(MXFContext *mxf, KLVPacket *klv, MXFMetadataReadF
> * it extending past the end of the KLV though (zzuf5.mxf). */
> if (avio_tell(pb) > klv_end) {
> if (ctx_size) {
> - ctx->type = type;
> mxf_free_metadataset(&ctx, 1);
> }
>
> @@ -2781,7 +2782,6 @@ static int mxf_read_local_tags(MXFContext *mxf, KLVPacket *klv, MXFMetadataReadF
> } else if (avio_tell(pb) <= next) /* only seek forward, else this can loop for a long time */
> avio_seek(pb, next, SEEK_SET);
> }
> - if (ctx_size) ctx->type = type;
Looks OK as far as I can tell. It's been a while since I dug into
mxfdec's type system.
/Tomas
More information about the ffmpeg-devel
mailing list