diff options
Diffstat (limited to 'funcs')
-rw-r--r-- | funcs/func_channel.c | 2 | ||||
-rw-r--r-- | funcs/func_cut.c | 5 | ||||
-rw-r--r-- | funcs/func_global.c | 4 | ||||
-rw-r--r-- | funcs/func_logic.c | 18 | ||||
-rw-r--r-- | funcs/func_strings.c | 21 |
5 files changed, 24 insertions, 26 deletions
diff --git a/funcs/func_channel.c b/funcs/func_channel.c index 699f3b660..bd3367df2 100644 --- a/funcs/func_channel.c +++ b/funcs/func_channel.c @@ -684,7 +684,7 @@ static int func_mchan_read(struct ast_channel *chan, const char *function, char *data, struct ast_str **buf, ssize_t len) { struct ast_channel *mchan = ast_channel_get_by_name(ast_channel_linkedid(chan)); - char *template = alloca(4 + strlen(data)); + char *template = ast_alloca(4 + strlen(data)); sprintf(template, "${%s}", data); /* SAFE */ ast_str_substitute_variables(buf, len, mchan ? mchan : chan, template); if (mchan) { diff --git a/funcs/func_cut.c b/funcs/func_cut.c index 762dd61fe..4b6dc9d48 100644 --- a/funcs/func_cut.c +++ b/funcs/func_cut.c @@ -119,7 +119,7 @@ static int sort_internal(struct ast_channel *chan, char *data, char *buffer, siz count++; } - sortable_keys = alloca(count * sizeof(struct sortable_keys)); + sortable_keys = ast_alloca(count * sizeof(struct sortable_keys)); memset(sortable_keys, 0, count * sizeof(struct sortable_keys)); @@ -170,9 +170,8 @@ static int cut_internal(struct ast_channel *chan, char *data, struct ast_str **b /* Check arguments */ if (args.argc < 3) { return ERROR_NOARG; - } else if (!(var_expr = alloca(strlen(args.varname) + 4))) { - return ERROR_NOMEM; } + var_expr = ast_alloca(strlen(args.varname) + 4); /* Get the value of the variable named in the 1st argument */ snprintf(var_expr, strlen(args.varname) + 4, "${%s}", args.varname); diff --git a/funcs/func_global.c b/funcs/func_global.c index e16b60ac1..0a4b89dae 100644 --- a/funcs/func_global.c +++ b/funcs/func_global.c @@ -148,7 +148,7 @@ static int shared_read(struct ast_channel *chan, const char *cmd, char *data, ch AST_STANDARD_APP_ARGS(args, data); if (!ast_strlen_zero(args.chan)) { - char *prefix = alloca(strlen(args.chan) + 2); + char *prefix = ast_alloca(strlen(args.chan) + 2); sprintf(prefix, "%s-", args.chan); if (!(c_ref = ast_channel_get_by_name(args.chan)) && !(c_ref = ast_channel_get_by_name_prefix(prefix, strlen(prefix)))) { ast_log(LOG_ERROR, "Channel '%s' not found! Variable '%s' will be blank.\n", args.chan, args.var); @@ -206,7 +206,7 @@ static int shared_write(struct ast_channel *chan, const char *cmd, char *data, c AST_STANDARD_APP_ARGS(args, data); if (!ast_strlen_zero(args.chan)) { - char *prefix = alloca(strlen(args.chan) + 2); + char *prefix = ast_alloca(strlen(args.chan) + 2); sprintf(prefix, "%s-", args.chan); if (!(c_ref = ast_channel_get_by_name(args.chan)) && !(c_ref = ast_channel_get_by_name_prefix(prefix, strlen(prefix)))) { ast_log(LOG_ERROR, "Channel '%s' not found! Variable '%s' not set to '%s'.\n", args.chan, args.var, value); diff --git a/funcs/func_logic.c b/funcs/func_logic.c index 21f08a13f..e371f7ec1 100644 --- a/funcs/func_logic.c +++ b/funcs/func_logic.c @@ -250,17 +250,15 @@ static int import_helper(struct ast_channel *chan, const char *cmd, char *data, struct ast_channel *chan2; if ((chan2 = ast_channel_get_by_name(args.channel))) { - char *s = alloca(strlen(args.varname) + 4); - if (s) { - sprintf(s, "${%s}", args.varname); - ast_channel_lock(chan2); - if (buf) { - pbx_substitute_variables_helper(chan2, s, buf, len); - } else { - ast_str_substitute_variables(str, len, chan2, s); - } - ast_channel_unlock(chan2); + char *s = ast_alloca(strlen(args.varname) + 4); + sprintf(s, "${%s}", args.varname); + ast_channel_lock(chan2); + if (buf) { + pbx_substitute_variables_helper(chan2, s, buf, len); + } else { + ast_str_substitute_variables(str, len, chan2, s); } + ast_channel_unlock(chan2); chan2 = ast_channel_unref(chan2); } } diff --git a/funcs/func_strings.c b/funcs/func_strings.c index 5bf687b52..2ba1d535b 100644 --- a/funcs/func_strings.c +++ b/funcs/func_strings.c @@ -456,7 +456,7 @@ static int function_fieldqty_helper(struct ast_channel *chan, const char *cmd, if (args.delim) { ast_get_encoded_char(args.delim, delim, &delim_used); - varsubst = alloca(strlen(args.varname) + 4); + varsubst = ast_alloca(strlen(args.varname) + 4); sprintf(varsubst, "${%s}", args.varname); ast_str_substitute_variables(&str, 0, chan, varsubst); @@ -522,7 +522,7 @@ static int function_fieldnum_helper(struct ast_channel *chan, const char *cmd, ast_log(LOG_ERROR, "Usage: FIELDNUM(<listname>,<delimiter>,<fieldvalue>)\n"); res = -1; } else { - varsubst = alloca(strlen(args.varname) + 4); + varsubst = ast_alloca(strlen(args.varname) + 4); sprintf(varsubst, "${%s}", args.varname); ast_str_substitute_variables(&str, 0, chan, varsubst); @@ -606,7 +606,7 @@ static int listfilter(struct ast_channel *chan, const char *cmd, char *parse, ch return -1; } - varsubst = alloca(strlen(args.listname) + 4); + varsubst = ast_alloca(strlen(args.listname) + 4); sprintf(varsubst, "${%s}", args.listname); /* If we don't lock the channel, the variable could disappear out from underneath us. */ @@ -636,7 +636,7 @@ static int listfilter(struct ast_channel *chan, const char *cmd, char *parse, ch } dlen = strlen(args.delimiter); - delim = alloca(dlen + 1); + delim = ast_alloca(dlen + 1); ast_get_encoded_str(args.delimiter, delim, dlen + 1); if ((dlen = strlen(delim)) == 0) { @@ -819,7 +819,7 @@ static int replace(struct ast_channel *chan, const char *cmd, char *data, struct return -1; } - varsubst = alloca(strlen(args.varname) + 4); + varsubst = ast_alloca(strlen(args.varname) + 4); sprintf(varsubst, "${%s}", args.varname); ast_str_substitute_variables(&str, 0, chan, varsubst); @@ -906,7 +906,7 @@ static int strreplace(struct ast_channel *chan, const char *cmd, char *data, str find_size = strlen(args.find_string); /* set varsubstr to the matching variable */ - varsubstr = alloca(strlen(args.varname) + 4); + varsubstr = ast_alloca(strlen(args.varname) + 4); sprintf(varsubstr, "${%s}", args.varname); ast_str_substitute_variables(&str, 0, chan, varsubstr); @@ -1026,9 +1026,10 @@ static int array(struct ast_channel *chan, const char *cmd, char *var, char *origvar = "", *value2, varname[256]; int i, ishash = 0; - value2 = ast_strdupa(value); - if (!var || !value2) + if (!var) { return -1; + } + value2 = ast_strdupa(value); if (!strcmp(cmd, "HASH")) { const char *var2 = pbx_builtin_getvar_helper(chan, "~ODBCFIELDS~"); @@ -1544,7 +1545,7 @@ static int shift_pop(struct ast_channel *chan, const char *cmd, char *data, stru return -1; } - varsubst = alloca(strlen(args.var) + 4); + varsubst = ast_alloca(strlen(args.var) + 4); sprintf(varsubst, "${%s}", args.var); ast_str_substitute_variables(&before, 0, chan, varsubst); @@ -1608,7 +1609,7 @@ static int unshift_push(struct ast_channel *chan, const char *cmd, char *data, c ast_get_encoded_char(args.delimiter, delimiter, &unused); } - varsubst = alloca(strlen(args.var) + 4); + varsubst = ast_alloca(strlen(args.var) + 4); sprintf(varsubst, "${%s}", args.var); ast_str_substitute_variables(&previous_value, 0, chan, varsubst); |