[prev in list] [next in list] [prev in thread] [next in thread]
List: xine-cvslog
Subject: [xine-cvs] =?utf-8?q?HG=3A_xine-lib-1=2E2=3A_demux=5Fmpgaudio=3A_?= =?utf-8?q?fix_leaks?=
From: Petri_Hintukainen via Xine-cvslog <xine-cvslog () lists ! sourceforge ! net
Date: 2017-09-29 13:56:01
Message-ID: 3dd6b9c4df1b9f1b9cb9.1506693203 () hg ! debian ! org
[Download RAW message or body]
# HG changeset patch
# User Petri Hintukainen <phintuka@users.sourceforge.net>
# Date 1506693203 -10800
# Node ID 3dd6b9c4df1b9f1b9cb91d522de214e366523717
# Branch default
# Parent c27ade191aec1355143ceb10e0971f6a7ff5f690
demux_mpgaudio: fix leaks
diff --git a/src/demuxers/demux_mpgaudio.c b/src/demuxers/demux_mpgaudio.c
--- a/src/demuxers/demux_mpgaudio.c
+++ b/src/demuxers/demux_mpgaudio.c
@@ -427,6 +427,16 @@
* Parse a Vbri header
* return the Vbri header or NULL on error
*/
+
+static void _free_vbri_header(vbri_header_t **pp)
+{
+ if (*pp) {
+ vbri_header_t *p = *pp;
+ _x_freep(p->toc);
+ _x_freep(pp);
+ }
+}
+
static vbri_header_t *XINE_MALLOC parse_vbri_header(mpg_audio_frame_t *frame,
uint8_t *buf, int bufsize) {
@@ -601,6 +611,7 @@
if (this->check_vbr_header) {
this->check_vbr_header = 0;
this->mpg_frame_start = frame_pos;
+ free(this->xing_header);
this->xing_header = parse_xing_header(&this->cur_frame, buf->content, this->cur_frame.size);
if (this->xing_header) {
buf->free_buffer(buf);
@@ -608,6 +619,7 @@
LOG_MODULE ": found Xing header at offset %"PRId64"\n", frame_pos);
return 1;
}
+ _free_vbri_header(&this->vbri_header);
this->vbri_header = parse_vbri_header(&this->cur_frame, buf->content, this->cur_frame.size);
if (this->vbri_header) {
buf->free_buffer(buf);
@@ -1156,6 +1168,15 @@
return DEMUX_OPTIONAL_UNSUPPORTED;
}
+static void demux_mpgaudio_dispose (demux_plugin_t *this_gen) {
+
+ demux_mpgaudio_t *this = (demux_mpgaudio_t *) this_gen;
+
+ _free_vbri_header(&this->vbri_header);
+ _x_freep(&this->xing_header);
+ free(this);
+}
+
static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *stream,
input_plugin_t *input) {
@@ -1186,7 +1207,7 @@
this->demux_plugin.send_headers = demux_mpgaudio_send_headers;
this->demux_plugin.send_chunk = demux_mpgaudio_send_chunk;
this->demux_plugin.seek = demux_mpgaudio_seek;
- this->demux_plugin.dispose = default_demux_plugin_dispose;
+ this->demux_plugin.dispose = demux_mpgaudio_dispose;
this->demux_plugin.get_status = demux_mpgaudio_get_status;
this->demux_plugin.get_stream_length = demux_mpgaudio_get_stream_length;
this->demux_plugin.get_capabilities = demux_mpgaudio_get_capabilities;
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Xine-cvslog mailing list
Xine-cvslog@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xine-cvslog
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic