From: Brian West Date: Tue, 6 Nov 2018 14:40:11 +0000 (-0600) Subject: FS-11496: [core] fix crash with four channel sound file X-Git-Tag: v1.8.6~1^2~42 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6569a44d855f28933a058c7b4ab1e239abb2f64b;p=thirdparty%2Ffreeswitch.git FS-11496: [core] fix crash with four channel sound file --- diff --git a/src/switch_core_file.c b/src/switch_core_file.c index 7db2dd92de..ca5a340214 100644 --- a/src/switch_core_file.c +++ b/src/switch_core_file.c @@ -404,6 +404,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_perform_file_open(const char *file, if (fh->real_channels != fh->channels && (flags & SWITCH_FILE_FLAG_READ) && !(fh->flags & SWITCH_FILE_NOMUX)) { + fh->cur_channels = fh->real_channels; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "File has %d channels, muxing to %d channel%s will occur.\n", fh->real_channels, fh->channels, fh->channels == 1 ? "" : "s"); } diff --git a/src/switch_ivr_play_say.c b/src/switch_ivr_play_say.c index 85e8d974c5..35fed600cb 100644 --- a/src/switch_ivr_play_say.c +++ b/src/switch_ivr_play_say.c @@ -1664,7 +1664,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess } } - buflen = (FILE_STARTSAMPLES * sizeof(*abuf) * fh->cur_channels) > 0 ? fh->cur_channels : fh->channels; + buflen = FILE_STARTSAMPLES * sizeof(*abuf) * (fh->cur_channels > 0 ? fh->cur_channels : fh->channels); if (buflen > write_frame.buflen) { abuf = realloc(abuf, buflen);