Skip to content
Snippets Groups Projects
Commit 072d9418 authored by Jonathan Rose's avatar Jonathan Rose
Browse files

Fix crash in audiohook translate to slin

This patch fixes a crash which would occur when an audiohook was
applied to a channel using an audio codec that could not be translated
to signed linear (such as when using pass-through codecs like OPUS or
when the codec translator module for the format in use is not loaded).

ASTERISK-25498 #close
Reported by: Ben Langfeld

Change-Id: Ib6ea7373fcc22e537cad373996136636201f4384
parent cfb146e0
No related branches found
No related tags found
No related merge requests found
......@@ -824,13 +824,20 @@ static struct ast_frame *audiohook_list_translate_to_slin(struct ast_audiohook_l
return new_frame;
}
if (ast_format_cmp(frame->subclass.format, in_translate->format) == AST_FORMAT_CMP_NOT_EQUAL) {
if (!in_translate->format ||
ast_format_cmp(frame->subclass.format, in_translate->format) != AST_FORMAT_CMP_EQUAL) {
struct ast_trans_pvt *new_trans;
new_trans = ast_translator_build_path(slin, frame->subclass.format);
if (!new_trans) {
return NULL;
}
if (in_translate->trans_pvt) {
ast_translator_free_path(in_translate->trans_pvt);
}
if (!(in_translate->trans_pvt = ast_translator_build_path(slin, frame->subclass.format))) {
return NULL;
}
in_translate->trans_pvt = new_trans;
ao2_replace(in_translate->format, frame->subclass.format);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment