summaryrefslogtreecommitdiff
path: root/libavformat/matroskadec.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2018-04-04 13:53:12 -0300
committerJames Almer <jamrial@gmail.com>2018-04-04 13:53:12 -0300
commit4f55b94663cf1eeb00ca23e0fe89766ad081f811 (patch)
tree7e6b7f7170c4a7148fee84e9b6f12091ac910530 /libavformat/matroskadec.c
parent2f273701119f5ec9534f4327f9f1471728518628 (diff)
avformat/matroskadec: address some more missing AVPacket frees
Fixes memleaks. Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavformat/matroskadec.c')
-rw-r--r--libavformat/matroskadec.c17
1 files changed, 4 insertions, 13 deletions
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index a616fb3241..6156c2f9b4 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -2913,13 +2913,10 @@ static int matroska_parse_rm_audio(MatroskaDemuxContext *matroska,
while (track->audio.pkt_cnt) {
int ret;
- AVPacket *pkt = av_mallocz(sizeof(AVPacket));
- if (!pkt)
- return AVERROR(ENOMEM);
+ AVPacket pktl, *pkt = &pktl;
ret = av_new_packet(pkt, a);
if (ret < 0) {
- av_free(pkt);
return ret;
}
memcpy(pkt->data,
@@ -2931,7 +2928,7 @@ static int matroska_parse_rm_audio(MatroskaDemuxContext *matroska,
pkt->stream_index = st->index;
ret = ff_packet_list_put(&matroska->queue, &matroska->queue_end, pkt, 0);
if (ret < 0) {
- av_packet_free(&pkt);
+ av_packet_unref(pkt);
return AVERROR(ENOMEM);
}
}
@@ -3028,7 +3025,7 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska,
uint64_t duration,
int64_t pos)
{
- AVPacket *pkt;
+ AVPacket pktl, *pkt = &pktl;
uint8_t *id, *settings, *text, *buf;
int id_len, settings_len, text_len;
uint8_t *p, *q;
@@ -3085,12 +3082,8 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska,
if (text_len <= 0)
return AVERROR_INVALIDDATA;
- pkt = av_mallocz(sizeof(*pkt));
- if (!pkt)
- return AVERROR(ENOMEM);
err = av_new_packet(pkt, text_len);
if (err < 0) {
- av_free(pkt);
return err;
}
@@ -3102,7 +3095,6 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska,
id_len);
if (!buf) {
av_packet_unref(pkt);
- av_free(pkt);
return AVERROR(ENOMEM);
}
memcpy(buf, id, id_len);
@@ -3114,7 +3106,6 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska,
settings_len);
if (!buf) {
av_packet_unref(pkt);
- av_free(pkt);
return AVERROR(ENOMEM);
}
memcpy(buf, settings, settings_len);
@@ -3134,7 +3125,7 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska,
err = ff_packet_list_put(&matroska->queue, &matroska->queue_end, pkt, 0);
if (err < 0) {
- av_packet_free(&pkt);
+ av_packet_unref(pkt);
return AVERROR(ENOMEM);
}