FS-7866: fix crash when running incorrect var api expansion syntax "eval ${${external_sip_ip}:4}"

This commit is contained in:
Michael Jerris 2015-07-21 12:23:21 -05:00
parent 0d06e6524a
commit 6b68cf4beb
1 changed files with 15 additions and 14 deletions

View File

@ -2365,25 +2365,26 @@ SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event,
} }
} }
if (offset || ooffset) { if (sub_val) {
cloned_sub_val = strdup(sub_val); if (offset || ooffset) {
switch_assert(cloned_sub_val); cloned_sub_val = strdup(sub_val);
sub_val = cloned_sub_val; switch_assert(cloned_sub_val);
} sub_val = cloned_sub_val;
}
if (offset >= 0) { if (offset >= 0) {
sub_val += offset; sub_val += offset;
} else if ((size_t) abs(offset) <= strlen(sub_val)) { } else if ((size_t) abs(offset) <= strlen(sub_val)) {
sub_val = cloned_sub_val + (strlen(cloned_sub_val) + offset); sub_val = cloned_sub_val + (strlen(cloned_sub_val) + offset);
} }
if (ooffset > 0 && (size_t) ooffset < strlen(sub_val)) { if (ooffset > 0 && (size_t) ooffset < strlen(sub_val)) {
if ((ptr = (char *) sub_val + ooffset)) { if ((ptr = (char *) sub_val + ooffset)) {
*ptr = '\0'; *ptr = '\0';
}
} }
} }
switch_safe_free(expanded); switch_safe_free(expanded);
} else { } else {
switch_stream_handle_t stream = { 0 }; switch_stream_handle_t stream = { 0 };