diff --git a/src/mod/formats/mod_ssml/mod_ssml.c b/src/mod/formats/mod_ssml/mod_ssml.c index ce2e205912..d2d6dc1e08 100644 --- a/src/mod/formats/mod_ssml/mod_ssml.c +++ b/src/mod/formats/mod_ssml/mod_ssml.c @@ -458,8 +458,8 @@ static int process_xml_lang(struct ssml_parser *parsed_data, char **atts) while (atts[i]) { if (!strcmp("xml:lang", atts[i])) { if (!zstr(atts[i + 1])) { - strncpy(cur_node->language, atts[i + 1], LANGUAGE_LEN); - cur_node->language[LANGUAGE_LEN - 1] = '\0'; + strncpy(cur_node->language, atts[i + 1], LANGUAGE_LEN); + cur_node->language[LANGUAGE_LEN - 1] = '\0'; } } i += 2; @@ -573,11 +573,19 @@ static int process_audio(struct ssml_parser *parsed_data, char **atts) while (atts[i]) { if (!strcmp("src", atts[i])) { char *src = atts[i + 1]; + ikstack *stack = NULL; if (!zstr(src) && parsed_data->num_files < parsed_data->max_files) { /* get the URI */ + if (strchr(src, '&')) { + stack = iks_stack_new(256, 0); + src = iks_unescape(stack, src, strlen(src)); + } switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Adding