mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-17 15:29:05 +00:00
main/file.c: fix possible extra ast_module_unref to format modules.
fn_wrapper only adds a reference to the format's module if the file was able to be opened. If not this causes an unmatched ast_module_unref in filestream_destructor. Move ast_module_ref to get_stream. ASTERISK-24492 #close Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/4149/ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@427464 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -371,6 +371,7 @@ static struct ast_filestream *get_filestream(struct ast_format_def *fmt, FILE *b
|
||||
int l = sizeof(*s) + fmt->buf_size + fmt->desc_size; /* total allocation size */
|
||||
if ( (s = ao2_alloc(l, filestream_destructor)) == NULL)
|
||||
return NULL;
|
||||
ast_module_ref(fmt->module);
|
||||
s->fmt = fmt;
|
||||
s->f = bfile;
|
||||
|
||||
@@ -399,8 +400,7 @@ static int fn_wrapper(struct ast_filestream *s, const char *comment, enum wrap_f
|
||||
else if (mode == WRAP_REWRITE && f->rewrite && f->rewrite(s, comment))
|
||||
ast_log(LOG_WARNING, "Unable to rewrite format %s\n", f->name);
|
||||
else {
|
||||
/* preliminary checks succeed. update usecount */
|
||||
ast_module_ref(f->module);
|
||||
/* preliminary checks succeed. */
|
||||
ret = 0;
|
||||
}
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user