From 730793be3212bde8d729c63ba58691f6e7b53e77 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Tue, 21 Jul 2015 12:23:21 -0500 Subject: [PATCH] FS-7866: [core] fix crash when running incorrect var api expansion syntax "eval ${${external_sip_ip}:4}" --- src/switch_event.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/switch_event.c b/src/switch_event.c index 13ce7b1f8d..1ac6433bde 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -2365,25 +2365,26 @@ SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, } } - if (offset || ooffset) { - cloned_sub_val = strdup(sub_val); - switch_assert(cloned_sub_val); - sub_val = cloned_sub_val; - } + if (sub_val) { + if (offset || ooffset) { + cloned_sub_val = strdup(sub_val); + switch_assert(cloned_sub_val); + sub_val = cloned_sub_val; + } - if (offset >= 0) { - sub_val += offset; - } else if ((size_t) abs(offset) <= strlen(sub_val)) { - sub_val = cloned_sub_val + (strlen(cloned_sub_val) + offset); - } + if (offset >= 0) { + sub_val += offset; + } else if ((size_t) abs(offset) <= strlen(sub_val)) { + sub_val = cloned_sub_val + (strlen(cloned_sub_val) + offset); + } - if (ooffset > 0 && (size_t) ooffset < strlen(sub_val)) { - if ((ptr = (char *) sub_val + ooffset)) { - *ptr = '\0'; + if (ooffset > 0 && (size_t) ooffset < strlen(sub_val)) { + if ((ptr = (char *) sub_val + ooffset)) { + *ptr = '\0'; + } } } - switch_safe_free(expanded); } else { switch_stream_handle_t stream = { 0 };