summaryrefslogtreecommitdiff
path: root/formats
diff options
context:
space:
mode:
authorSean Bright <sean.bright@gmail.com>2017-04-14 13:51:31 -0400
committerSean Bright <sean.bright@gmail.com>2017-04-15 12:14:48 -0500
commit90c630aaa1e33a6518b35a9b8361ff015e5ef3f5 (patch)
treea5f98964f13419a4635914483c280cfa2cb942cc /formats
parent5e2a8ef94ad573f83a65b4d37b4f34ac947c07a2 (diff)
format_ogg_vorbis: Clear ogg/vorbis data structures on close
On filestream close, we need to clear out the ogg & vorbis data structures to prevent a memory leak. ASTERISK-26169 #close Reported by: Ivan Myalkin Change-Id: Iee94c5a5d5bdafbf8b181c5c064d15d90ace8274
Diffstat (limited to 'formats')
-rw-r--r--formats/format_ogg_vorbis.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/formats/format_ogg_vorbis.c b/formats/format_ogg_vorbis.c
index 6428e275b..cf3b1c0e9 100644
--- a/formats/format_ogg_vorbis.c
+++ b/formats/format_ogg_vorbis.c
@@ -160,6 +160,7 @@ static int ogg_vorbis_rewrite(struct ast_filestream *s,
if (vorbis_encode_init_vbr(&tmp->vi, 1, DEFAULT_SAMPLE_RATE, 0.4)) {
ast_log(LOG_ERROR, "Unable to initialize Vorbis encoder!\n");
+ vorbis_info_clear(&tmp->vi);
return -1;
}
@@ -275,6 +276,13 @@ static void ogg_vorbis_close(struct ast_filestream *fs)
* and write out the rest of the data */
vorbis_analysis_wrote(&s->vd, 0);
write_stream(s, fs->f);
+
+ /* Cleanup */
+ ogg_stream_clear(&s->os);
+ vorbis_block_clear(&s->vb);
+ vorbis_dsp_clear(&s->vd);
+ vorbis_comment_clear(&s->vc);
+ vorbis_info_clear(&s->vi);
} else {
/* clear OggVorbis_File handle */
ov_clear(&s->ov_f);