From: Anthony Minessale Date: Sat, 21 Jul 2012 00:15:04 +0000 (-0500) Subject: FS-4450 this is pre-emptive, This is the only way I can see an endless loop here X-Git-Tag: v1.2.0~88^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6ec4514c682f906de4fbf8bfb5ff9b2d9848d245;p=thirdparty%2Ffreeswitch.git FS-4450 this is pre-emptive, This is the only way I can see an endless loop here --- diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 9bddf694d9..fd47ffdc08 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -2380,8 +2380,9 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess while (*chan_type == '[') { char *parsed = NULL; - - for (p = chan_type; p && *p && *p != ']'; p++) { + char *bend = switch_find_end_paren(chan_type, '[', ']'); + + for (p = chan_type + 1; p && p < bend && *p; p++) { if (*p == QUOTED_ESC_COMMA) { *p = ','; } @@ -2392,8 +2393,13 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Parse Error!\n"); switch_goto_status(SWITCH_STATUS_GENERR, done); } - - chan_type = parsed; + + if (chan_type == parsed) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Parse Error!\n"); + switch_goto_status(SWITCH_STATUS_GENERR, done); + } else { + chan_type = parsed; + } }