diff options
-rw-r--r-- | ChangeLog | 7 | ||||
m--------- | common | 0 | ||||
-rw-r--r-- | gst/h264parse/gsth264parse.c | 9 |
3 files changed, 15 insertions, 1 deletions
@@ -1,3 +1,10 @@ +2008-02-12 Wim Taymans <wim.taymans@collabora.co.uk> + + Patch by: Josep Torra Valles <josep@fluendo.com> + + * gst/h264parse/gsth264parse.c: (gst_h264_parse_chain_reverse): + Fix potential buffer leak in reverse mode. Fixes #516061. + 2008-02-12 Sebastian Dröge <slomo@circular-chaos.org> * sys/dshowdecwrapper/gstdshowaudiodec.c: diff --git a/common b/common -Subproject 05a617c9043ddb78f8578195b18c166d7e1d4c2 +Subproject 2a19465fdb43a75f4d32950fd2beb1beb950eec 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; } |