From 9e3ff7cfd1c6dd23de33aa7cc77532acfc789b95 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 6 Jun 2008 13:43:41 +0000 Subject: [PATCH] add patch from FSCORE-136 git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8776 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/switch_channel.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/switch_channel.c b/src/switch_channel.c index 5a469b8670..8bf1bcffdb 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -1599,8 +1599,8 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables(switch_channel_t *channel char *p, *c = NULL; char *data, *indup; size_t sp = 0, len = 0, olen = 0, vtype = 0, br = 0, cpos, block = 128; - const char *q, *sub_val = NULL; - char *cloned_sub_val = NULL; + const char *q; + char *cloned_sub_val = NULL, *sub_val = NULL; char *func_val = NULL; int nv = 0; @@ -1743,7 +1743,7 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables(switch_channel_t *channel } } - if ((sub_val = switch_channel_get_variable(channel, vname))) { + if ((sub_val = (char *) switch_channel_get_variable(channel, vname))) { if (offset || ooffset) { cloned_sub_val = strdup(sub_val); switch_assert(cloned_sub_val); @@ -1751,7 +1751,11 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables(switch_channel_t *channel } if (offset >= 0) { - sub_val += offset; + if (offset > strlen(sub_val)) { + *sub_val = '\0'; + } else { + sub_val += offset; + } } else if ((size_t) abs(offset) <= strlen(sub_val)) { sub_val = cloned_sub_val + (strlen(cloned_sub_val) + offset); }