diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 3f4e885805..218d665e3a 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -260,7 +260,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess switch_codec_t write_codec = { 0 }; switch_frame_t write_frame = { 0 }; uint8_t fdata[1024], pass = 0; - char *file = NULL, *key = NULL, *odata, *var; + char key[80] = "", file[512] = "", *odata, *var; switch_call_cause_t reason = SWITCH_CAUSE_UNALLOCATED; uint8_t to = 0; char *var_val, *vars = NULL, *ringback_data = NULL; @@ -362,9 +362,9 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess } if ((var = switch_event_get_header(var_event, "group_confirm_key"))) { - key = switch_core_session_strdup(session, var); + switch_copy_string(key, var, sizeof(key)); if ((var = switch_event_get_header(var_event, "group_confirm_file"))) { - file = switch_core_session_strdup(session, var); + switch_copy_string(file, var, sizeof(file)); } } // When using the AND operator, the fail_on_single_reject flag may be set in order to indicate that a single @@ -373,8 +373,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess fail_on_single_reject = 1; } - if (file && !strcmp(file, "undef")) { - file = NULL; + if (!switch_strlen_zero(file) && !strcmp(file, "undef")) { + *file = '\0'; } if ((var_val = switch_event_get_header(var_event, "ignore_early_media")) && switch_true(var_val)) { @@ -440,8 +440,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess read_frame = NULL; pool = NULL; pass = 0; - file = NULL; - key = NULL; var = NULL; to = 0;