From fe7d13387940fa5fdead42a1f3e691c9e297c776 Mon Sep 17 00:00:00 2001 From: Josep Torra Valles Date: Tue, 12 Feb 2008 18:29:29 +0000 Subject: gst/h264parse/gsth264parse.c: Fix potential buffer leak in reverse mode. Fixes #516061. Original commit message from CVS: Patch by: Josep Torra Valles * gst/h264parse/gsth264parse.c: (gst_h264_parse_chain_reverse): Fix potential buffer leak in reverse mode. Fixes #516061. --- gst/h264parse/gsth264parse.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'gst') diff --git a/gst/h264parse/gsth264parse.c b/gst/h264parse/gsth264parse.c index dee03969..12b2ba72 100644 --- a/gst/h264parse/gsth264parse.c +++ b/gst/h264parse/gsth264parse.c @@ -683,6 +683,7 @@ gst_h264_parse_chain_reverse (GstH264Parse * h264parse, gboolean discont, GstBuffer * buffer) { GstFlowReturn res = GST_FLOW_OK; + GstBuffer *gbuf = NULL; /* if we have a discont, move buffers to the decode list */ if (G_UNLIKELY (discont)) { @@ -700,7 +701,6 @@ gst_h264_parse_chain_reverse (GstH264Parse * h264parse, gboolean discont, h264parse->prev = NULL; while (h264parse->gather) { - GstBuffer *gbuf; guint8 *data; /* get new buffer and init the start code search to the end position */ @@ -761,6 +761,7 @@ gst_h264_parse_chain_reverse (GstH264Parse * h264parse, gboolean discont, last); prev = gst_buffer_create_sub (gbuf, 0, last); gst_buffer_unref (gbuf); + gbuf = NULL; break; } } @@ -777,6 +778,12 @@ gst_h264_parse_chain_reverse (GstH264Parse * h264parse, gboolean discont, GST_BUFFER_SIZE (buffer)); h264parse->gather = g_list_prepend (h264parse->gather, buffer); } + + if (gbuf) { + gst_buffer_unref (gbuf); + gbuf = NULL; + } + return res; } -- cgit v1.2.1