diff options
Diffstat (limited to 'funcs')
-rw-r--r-- | funcs/func_blacklist.c | 5 | ||||
-rw-r--r-- | funcs/func_callcompletion.c | 10 | ||||
-rw-r--r-- | funcs/func_callerid.c | 10 | ||||
-rw-r--r-- | funcs/func_cdr.c | 15 | ||||
-rw-r--r-- | funcs/func_channel.c | 28 | ||||
-rw-r--r-- | funcs/func_dialplan.c | 12 | ||||
-rw-r--r-- | funcs/func_frame_trace.c | 5 | ||||
-rw-r--r-- | funcs/func_global.c | 6 | ||||
-rw-r--r-- | funcs/func_groupcount.c | 19 | ||||
-rw-r--r-- | funcs/func_jitterbuffer.c | 5 | ||||
-rw-r--r-- | funcs/func_math.c | 5 | ||||
-rw-r--r-- | funcs/func_odbc.c | 5 | ||||
-rw-r--r-- | funcs/func_pitchshift.c | 5 | ||||
-rw-r--r-- | funcs/func_speex.c | 5 | ||||
-rw-r--r-- | funcs/func_strings.c | 15 | ||||
-rw-r--r-- | funcs/func_volume.c | 9 |
16 files changed, 151 insertions, 8 deletions
diff --git a/funcs/func_blacklist.c b/funcs/func_blacklist.c index 928d5d728..bb045059b 100644 --- a/funcs/func_blacklist.c +++ b/funcs/func_blacklist.c @@ -61,6 +61,11 @@ static int blacklist_read(struct ast_channel *chan, const char *cmd, char *data, char blacklist[1]; int bl = 0; + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + if (ast_channel_caller(chan)->id.number.valid && ast_channel_caller(chan)->id.number.str) { if (!ast_db_get("blacklist", ast_channel_caller(chan)->id.number.str, blacklist, sizeof (blacklist))) bl = 1; diff --git a/funcs/func_callcompletion.c b/funcs/func_callcompletion.c index cee06faa4..cb1cd59b3 100644 --- a/funcs/func_callcompletion.c +++ b/funcs/func_callcompletion.c @@ -74,6 +74,11 @@ static int acf_cc_read(struct ast_channel *chan, const char *name, char *data, struct ast_cc_config_params *cc_params; int res; + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", name); + return -1; + } + ast_channel_lock(chan); if (!(cc_params = ast_channel_get_cc_config_params(chan))) { ast_channel_unlock(chan); @@ -91,6 +96,11 @@ static int acf_cc_write(struct ast_channel *chan, const char *cmd, char *data, struct ast_cc_config_params *cc_params; int res; + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + ast_channel_lock(chan); if (!(cc_params = ast_channel_get_cc_config_params(chan))) { ast_channel_unlock(chan); diff --git a/funcs/func_callerid.c b/funcs/func_callerid.c index b4649c177..4f6a6779b 100644 --- a/funcs/func_callerid.c +++ b/funcs/func_callerid.c @@ -900,6 +900,11 @@ static int callerpres_deprecate_notify; */ static int callerpres_read(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len) { + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + if (!callerpres_deprecate_notify) { callerpres_deprecate_notify = 1; ast_log(LOG_WARNING, "CALLERPRES is deprecated." @@ -926,6 +931,11 @@ static int callerpres_write(struct ast_channel *chan, const char *cmd, char *dat { int pres; + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + if (!callerpres_deprecate_notify) { callerpres_deprecate_notify = 1; ast_log(LOG_WARNING, "CALLERPRES is deprecated." diff --git a/funcs/func_cdr.c b/funcs/func_cdr.c index 0116eee7f..44ecf4d6b 100644 --- a/funcs/func_cdr.c +++ b/funcs/func_cdr.c @@ -441,6 +441,11 @@ static int cdr_read(struct ast_channel *chan, const char *cmd, char *parse, ao2_alloc(sizeof(*payload), NULL), ao2_cleanup); struct cdr_func_data output = { 0, }; + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + if (!payload) { return -1; } @@ -489,6 +494,11 @@ static int cdr_write(struct ast_channel *chan, const char *cmd, char *parse, RAII_VAR(struct stasis_message_router *, router, ast_cdr_message_router(), ao2_cleanup); + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + if (!router) { ast_log(AST_LOG_WARNING, "Failed to manipulate CDR for channel %s: no message router\n", ast_channel_name(chan)); @@ -522,6 +532,11 @@ static int cdr_prop_write(struct ast_channel *chan, const char *cmd, char *parse ao2_alloc(sizeof(*payload), NULL), ao2_cleanup); RAII_VAR(struct stasis_message_router *, router, ast_cdr_message_router(), ao2_cleanup); + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + if (!router) { ast_log(AST_LOG_WARNING, "Failed to manipulate CDR for channel %s: no message router\n", ast_channel_name(chan)); diff --git a/funcs/func_channel.c b/funcs/func_channel.c index af9a6a984..cca15c308 100644 --- a/funcs/func_channel.c +++ b/funcs/func_channel.c @@ -421,6 +421,11 @@ static int func_channel_read(struct ast_channel *chan, const char *function, int ret = 0; struct ast_format_cap *tmpcap; + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", function); + return -1; + } + if (!strcasecmp(data, "audionativeformat")) { char tmp[512]; @@ -733,6 +738,11 @@ static int func_channel_write(struct ast_channel *chan, const char *function, ch .value = value, }; + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", function); + return -1; + } + res = func_channel_write_real(chan, function, data, value); ast_channel_setoption(chan, AST_OPTION_CHANNEL_WRITE, &write_info, sizeof(write_info), 0); @@ -806,8 +816,15 @@ static struct ast_custom_function channels_function = { 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)); + struct ast_channel *mchan; char *template = ast_alloca(4 + strlen(data)); + + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", function); + return -1; + } + + mchan = ast_channel_get_by_name(ast_channel_linkedid(chan)); sprintf(template, "${%s}", data); /* SAFE */ ast_str_substitute_variables(buf, len, mchan ? mchan : chan, template); if (mchan) { @@ -819,7 +836,14 @@ static int func_mchan_read(struct ast_channel *chan, const char *function, static int func_mchan_write(struct ast_channel *chan, const char *function, char *data, const char *value) { - struct ast_channel *mchan = ast_channel_get_by_name(ast_channel_linkedid(chan)); + struct ast_channel *mchan; + + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", function); + return -1; + } + + mchan = ast_channel_get_by_name(ast_channel_linkedid(chan)); pbx_builtin_setvar_helper(mchan ? mchan : chan, data, value); if (mchan) { ast_channel_unref(mchan); diff --git a/funcs/func_dialplan.c b/funcs/func_dialplan.c index d06ddba9a..02b4c7a9e 100644 --- a/funcs/func_dialplan.c +++ b/funcs/func_dialplan.c @@ -96,20 +96,23 @@ static int isexten_function_read(struct ast_channel *chan, const char *cmd, char int priority_num; if (sscanf(args.priority, "%30d", &priority_num) == 1 && priority_num > 0) { int res; - res = ast_exists_extension(chan, args.context, args.exten, priority_num, + res = ast_exists_extension(chan, args.context, args.exten, priority_num, + !chan ? NULL : S_COR(ast_channel_caller(chan)->id.number.valid, ast_channel_caller(chan)->id.number.str, NULL)); if (res) strcpy(buf, "1"); } else { int res; res = ast_findlabel_extension(chan, args.context, args.exten, args.priority, + !chan ? NULL : S_COR(ast_channel_caller(chan)->id.number.valid, ast_channel_caller(chan)->id.number.str, NULL)); if (res > 0) strcpy(buf, "1"); } } else if (!ast_strlen_zero(args.exten)) { int res; - res = ast_exists_extension(chan, args.context, args.exten, 1, + res = ast_exists_extension(chan, args.context, args.exten, 1, + !chan ? NULL : S_COR(ast_channel_caller(chan)->id.number.valid, ast_channel_caller(chan)->id.number.str, NULL)); if (res) strcpy(buf, "1"); @@ -133,6 +136,11 @@ static int acf_isexten_exec(struct ast_channel *chan, const char *cmd, char *par AST_APP_ARG(priority); ); + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + AST_STANDARD_APP_ARGS(args, parse); if (ast_strlen_zero(args.context)) { diff --git a/funcs/func_frame_trace.c b/funcs/func_frame_trace.c index bdbc596e6..6452d0bcb 100644 --- a/funcs/func_frame_trace.c +++ b/funcs/func_frame_trace.c @@ -157,6 +157,11 @@ static int frame_trace_helper(struct ast_channel *chan, const char *cmd, char *d }; int i = 0; + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + if (!(framedata = ast_calloc(1, sizeof(*framedata)))) { return 0; } diff --git a/funcs/func_global.c b/funcs/func_global.c index 374720205..a2329c46e 100644 --- a/funcs/func_global.c +++ b/funcs/func_global.c @@ -173,6 +173,9 @@ static int shared_read(struct ast_channel *chan, const char *cmd, char *data, ch return -1; } chan = c_ref; + } else if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; } ast_channel_lock(chan); @@ -233,6 +236,9 @@ static int shared_write(struct ast_channel *chan, const char *cmd, char *data, c return -1; } chan = c_ref; + } else if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; } len = 9 + strlen(args.var); /* SHARED() + var */ diff --git a/funcs/func_groupcount.c b/funcs/func_groupcount.c index 95ee0cde6..4ea681691 100644 --- a/funcs/func_groupcount.c +++ b/funcs/func_groupcount.c @@ -104,6 +104,11 @@ static int group_count_function_read(struct ast_channel *chan, const char *cmd, int count = -1; char group[80] = "", category[80] = ""; + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + ast_app_group_split_group(data, group, sizeof(group), category, sizeof(category)); @@ -174,9 +179,14 @@ static int group_function_read(struct ast_channel *chan, const char *cmd, { int ret = -1; struct ast_group_info *gi = NULL; - + + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + ast_app_group_list_rdlock(); - + for (gi = ast_app_group_list_head(); gi; gi = AST_LIST_NEXT(gi, group_list)) { if (gi->chan != chan) continue; @@ -201,6 +211,11 @@ static int group_function_write(struct ast_channel *chan, const char *cmd, { char grpcat[256]; + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + if (!value) { return -1; } diff --git a/funcs/func_jitterbuffer.c b/funcs/func_jitterbuffer.c index a00361043..31ab86ce3 100644 --- a/funcs/func_jitterbuffer.c +++ b/funcs/func_jitterbuffer.c @@ -85,6 +85,11 @@ static int jb_helper(struct ast_channel *chan, const char *cmd, char *data, cons { struct ast_jb_conf jb_conf; + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + /* Initialize and set jb_conf */ ast_jb_conf_default(&jb_conf); diff --git a/funcs/func_math.c b/funcs/func_math.c index 36f3fc48a..2bc68c579 100644 --- a/funcs/func_math.c +++ b/funcs/func_math.c @@ -392,6 +392,11 @@ static int crement_function_read(struct ast_channel *chan, const char *cmd, return -1; } + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + ast_channel_lock(chan); if (!(var = pbx_builtin_getvar_helper(chan, data))) { diff --git a/funcs/func_odbc.c b/funcs/func_odbc.c index 4469ca7a2..5e7655f90 100644 --- a/funcs/func_odbc.c +++ b/funcs/func_odbc.c @@ -801,6 +801,11 @@ static int acf_fetch(struct ast_channel *chan, const char *cmd, char *data, char struct odbc_datastore *resultset; struct odbc_datastore_row *row; + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + ast_channel_lock(chan); store = ast_channel_datastore_find(chan, &odbc_info, data); if (!store) { diff --git a/funcs/func_pitchshift.c b/funcs/func_pitchshift.c index ca441f985..e5091d95d 100644 --- a/funcs/func_pitchshift.c +++ b/funcs/func_pitchshift.c @@ -200,6 +200,11 @@ static int pitchshift_helper(struct ast_channel *chan, const char *cmd, char *da int new = 0; float amount = 0; + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + ast_channel_lock(chan); if (!(datastore = ast_channel_datastore_find(chan, &pitchshift_datastore, NULL))) { ast_channel_unlock(chan); diff --git a/funcs/func_speex.c b/funcs/func_speex.c index 7467c23bb..4e3c13b87 100644 --- a/funcs/func_speex.c +++ b/funcs/func_speex.c @@ -202,6 +202,11 @@ static int speex_write(struct ast_channel *chan, const char *cmd, char *data, co struct speex_direction_info **sdi = NULL; int is_new = 0; + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + if (strcasecmp(data, "rx") && strcasecmp(data, "tx")) { ast_log(LOG_ERROR, "Invalid argument provided to the %s function\n", cmd); return -1; diff --git a/funcs/func_strings.c b/funcs/func_strings.c index 3dd0168f1..ac889ec04 100644 --- a/funcs/func_strings.c +++ b/funcs/func_strings.c @@ -1097,6 +1097,11 @@ static int hashkeys_read(struct ast_channel *chan, const char *cmd, char *data, struct ast_var_t *newvar; struct ast_str *prefix = ast_str_alloca(80); + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + ast_str_set(&prefix, -1, HASH_PREFIX, data); memset(buf, 0, len); @@ -1119,6 +1124,11 @@ static int hashkeys_read2(struct ast_channel *chan, const char *cmd, char *data, struct ast_str *prefix = ast_str_alloca(80); char *tmp; + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + ast_str_set(&prefix, -1, HASH_PREFIX, data); AST_LIST_TRAVERSE(ast_channel_varshead(chan), newvar, entries) { @@ -1188,6 +1198,11 @@ static int hash_read(struct ast_channel *chan, const char *cmd, char *data, char AST_APP_ARG(col)[100]; ); + if (!chan) { + ast_log(LOG_WARNING, "No channel and only 1 parameter was provided to %s function.\n", cmd); + return -1; + } + /* Get column names, in no particular order */ hashkeys_read(chan, "HASHKEYS", arg.hashname, colnames, sizeof(colnames)); pbx_builtin_setvar_helper(chan, "~ODBCFIELDS~", colnames); diff --git a/funcs/func_volume.c b/funcs/func_volume.c index 953a37dcd..9fd02008f 100644 --- a/funcs/func_volume.c +++ b/funcs/func_volume.c @@ -156,12 +156,17 @@ static int volume_write(struct ast_channel *chan, const char *cmd, char *data, c int is_new = 0; /* Separate options from argument */ - + AST_DECLARE_APP_ARGS(args, AST_APP_ARG(direction); AST_APP_ARG(options); ); - + + if (!chan) { + ast_log(LOG_WARNING, "No channel was provided to %s function.\n", cmd); + return -1; + } + AST_STANDARD_APP_ARGS(args, data); ast_channel_lock(chan); |