From: Michael Jerris Date: Tue, 21 Jul 2015 17:23:21 +0000 (-0500) Subject: FS-7866: [core] fix crash when running incorrect var api expansion syntax "eval ... X-Git-Tag: v1.4.21~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=730793be3212bde8d729c63ba58691f6e7b53e77;p=thirdparty%2Ffreeswitch.git FS-7866: [core] fix crash when running incorrect var api expansion syntax "eval ${${external_sip_ip}:4}" --- 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 };