diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 6c0d0d5c15..cad207e228 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2648,8 +2648,11 @@ static int matroska_parse_frame(MatroskaDemuxContext *matroska, offset = 8; pkt = av_mallocz(sizeof(AVPacket)); - if (!pkt) + if (!pkt) { + if (pkt_data != data) + av_freep(&pkt_data); return AVERROR(ENOMEM); + } /* XXX: prevent data copy... */ if (av_new_packet(pkt, pkt_size + offset) < 0) { av_free(pkt);