From: Sean Bright Date: Fri, 14 Apr 2017 17:51:31 +0000 (-0400) Subject: format_ogg_vorbis: Clear ogg/vorbis data structures on close X-Git-Tag: 14.5.0-rc1~44 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=07e6f5806a8b02cdee723cf693f4d81a3df1ba12;p=thirdparty%2Fasterisk.git 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 --- diff --git a/formats/format_ogg_vorbis.c b/formats/format_ogg_vorbis.c index 7414ea7191..17b529ec64 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);