From 712976653de9a27a8c155b9e4525e1dd6cb07e7f Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Fri, 9 Feb 2007 22:55:48 +0000 Subject: [PATCH] fix paramater checking on switch_ivr_phrase_macro and it's consumers. git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4187 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/applications/mod_dptools/mod_dptools.c | 5 ++--- .../languages/mod_spidermonkey/mod_spidermonkey.c | 3 +++ src/switch_ivr.c | 13 +++++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 1f2a880f5b..05a90d1c14 100644 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -128,9 +128,8 @@ static void phrase_function(switch_core_session_t *session, char *data) if ((mdata = strchr(macro, ','))) { *mdata++ = '\0'; } - if (!(lang = switch_channel_get_variable(channel, "language"))) { - lang = "en"; - } + + lang = switch_channel_get_variable(channel, "language"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Execute %s(%s) lang %s\n", macro, mdata, lang); switch_ivr_phrase_macro(session, macro, mdata, lang, NULL); diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c index 88aba1858d..472471d83a 100644 --- a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c @@ -1029,8 +1029,11 @@ static JSBool session_sayphrase(JSContext *cx, JSObject *obj, uintN argc, jsval if (switch_strlen_zero(phrase_name)) { return JS_FALSE; } + } else { + return JS_FALSE; } + if (argc > 1) { phrase_data = JS_GetStringBytes(JS_ValueToString(cx, argv[1])); } diff --git a/src/switch_ivr.c b/src/switch_ivr.c index 01ba608940..b11de5b0f9 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -4617,6 +4617,19 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_phrase_macro(switch_core_session_t *s channel = switch_core_session_get_channel(session); assert(channel != NULL); + if (!macro_name) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No phrase macro specified.\n"); + return status; + } + + if (!lang) { + lang = "en"; + } + + if (!data) { + data = ""; + } + switch_url_encode(data, enc_hint, sizeof(enc_hint)); snprintf(hint_data, sizeof(hint_data), "macro_name=%s&lang=%s&data=%s", macro_name, lang, enc_hint);