diff --git a/libavformat/avidec.c b/libavformat/avidec.c index df78925d55..e3cd844169 100644 --- a/libavformat/avidec.c +++ b/libavformat/avidec.c @@ -306,8 +306,10 @@ static int avi_read_tag(AVFormatContext *s, AVStream *st, uint32_t tag, value = av_malloc(size + 1); if (!value) return AVERROR(ENOMEM); - if (avio_read(pb, value, size) != size) + if (avio_read(pb, value, size) != size) { + av_freep(&value); return AVERROR_INVALIDDATA; + } value[size] = 0; AV_WL32(key, tag);