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. --- ChangeLog | 7 +++++++ common | 2 +- gst/h264parse/gsth264parse.c | 9 ++++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 440b0d1b..4ea334ad 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-02-12 Wim Taymans + + Patch by: Josep Torra Valles + + * gst/h264parse/gsth264parse.c: (gst_h264_parse_chain_reverse): + Fix potential buffer leak in reverse mode. Fixes #516061. + 2008-02-12 Sebastian Dröge * sys/dshowdecwrapper/gstdshowaudiodec.c: diff --git a/common b/common index 05a617c9..2a19465f 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 05a617c9043ddb78f8578195b18c166d7e1d4c2e +Subproject commit 2a19465fdb43a75f4d32950fd2beb1beb950eec2 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