提交 9e3ff7cf authored 作者: Anthony Minessale's avatar Anthony Minessale

add patch from FSCORE-136

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8776 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 0521a95b
...@@ -1599,8 +1599,8 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables(switch_channel_t *channel ...@@ -1599,8 +1599,8 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables(switch_channel_t *channel
char *p, *c = NULL; char *p, *c = NULL;
char *data, *indup; char *data, *indup;
size_t sp = 0, len = 0, olen = 0, vtype = 0, br = 0, cpos, block = 128; size_t sp = 0, len = 0, olen = 0, vtype = 0, br = 0, cpos, block = 128;
const char *q, *sub_val = NULL; const char *q;
char *cloned_sub_val = NULL; char *cloned_sub_val = NULL, *sub_val = NULL;
char *func_val = NULL; char *func_val = NULL;
int nv = 0; int nv = 0;
...@@ -1743,7 +1743,7 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables(switch_channel_t *channel ...@@ -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) { if (offset || ooffset) {
cloned_sub_val = strdup(sub_val); cloned_sub_val = strdup(sub_val);
switch_assert(cloned_sub_val); switch_assert(cloned_sub_val);
...@@ -1751,7 +1751,11 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables(switch_channel_t *channel ...@@ -1751,7 +1751,11 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables(switch_channel_t *channel
} }
if (offset >= 0) { 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)) { } 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);
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论