diff --git a/src/switch_event.c b/src/switch_event.c index 1e4ecbb774..7eb574f960 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 };