summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarren Salt <devspam@moreofthesa.me.uk>2012-06-09 17:09:49 +0100
committerDarren Salt <devspam@moreofthesa.me.uk>2012-06-09 17:09:49 +0100
commit7d997a77166b94aea43afbbc252f1aa0af00a7fa (patch)
treec1b968ed0063679f6a1731f3ebc86e9aefe27a5c
parent4edc2d3b758cb4348cfe2115707be54d71f5fce8 (diff)
downloadxine-lib-7d997a77166b94aea43afbbc252f1aa0af00a7fa.tar.gz
xine-lib-7d997a77166b94aea43afbbc252f1aa0af00a7fa.tar.bz2
Double-free with some AAC files (missing check).
-rw-r--r--ChangeLog1
-rw-r--r--src/libfaad/xine_faad_decoder.c6
2 files changed, 5 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index dda6b1ee3..16ba11b74 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,5 @@
xine-lib (1.1.21) ????-??-??
+ * Fix a potential double-free (goom) when playing AAC files.
* Fix matroska header compression.
* MPEG-TS fixes and enhancements
* Improved syncing of DVB subtitles
diff --git a/src/libfaad/xine_faad_decoder.c b/src/libfaad/xine_faad_decoder.c
index 86dc7d6d3..af0c6f967 100644
--- a/src/libfaad/xine_faad_decoder.c
+++ b/src/libfaad/xine_faad_decoder.c
@@ -249,8 +249,10 @@ static void faad_decode_audio ( faad_decoder_t *this, int end_frame ) {
lprintf("faacDecDecode() returned rate=%"PRId32" channels=%d used=%d\n",
this->rate, this->num_channels, used);
- this->stream->audio_out->close (this->stream->audio_out, this->stream);
- this->output_open = 0;
+ if (this->output_open) {
+ this->stream->audio_out->close (this->stream->audio_out, this->stream);
+ this->output_open = 0;
+ }
faad_open_output( this );
faad_meta_info_set( this );