From 85b7456efe9c6e6047c849626190f138faa8b42d Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Mon, 13 Jul 2015 22:26:53 +0200 Subject: avcodec/hevc_parser: Fix memleaks in parser mix Found-by: jamrial Signed-off-by: Michael Niedermayer --- libavcodec/hevc_parser.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'libavcodec/hevc_parser.c') diff --git a/libavcodec/hevc_parser.c b/libavcodec/hevc_parser.c index fd879a6436..8b232440b9 100644 --- a/libavcodec/hevc_parser.c +++ b/libavcodec/hevc_parser.c @@ -183,7 +183,7 @@ static inline int parse_nal_units(AVCodecParserContext *s, const uint8_t *buf, GetBitContext *gb; SliceHeader *sh = &h->sh; HEVCParamSets *ps = &h->ps; - HEVCPacket *pkt = &h->pkt; + HEVCPacket *pkt = &ctx->pkt; const uint8_t *buf_end = buf + buf_size; int state = -1, i; HEVCNAL *nal; @@ -420,6 +420,16 @@ static void hevc_parser_close(AVCodecParserContext *s) #if ADVANCED_PARSER HEVCContext *h = &ctx->h; + + for (i = 0; i < FF_ARRAY_ELEMS(h->ps.vps_list); i++) + av_buffer_unref(&h->ps.vps_list[i]); + for (i = 0; i < FF_ARRAY_ELEMS(h->ps.sps_list); i++) + av_buffer_unref(&h->ps.sps_list[i]); + for (i = 0; i < FF_ARRAY_ELEMS(h->ps.pps_list); i++) + av_buffer_unref(&h->ps.pps_list[i]); + + h->ps.sps = NULL; + av_freep(&h->HEVClc); #endif -- cgit v1.2.3