summaryrefslogtreecommitdiff
path: root/funcs
diff options
context:
space:
mode:
Diffstat (limited to 'funcs')
-rw-r--r--funcs/func_blacklist.c5
-rw-r--r--funcs/func_callcompletion.c10
-rw-r--r--funcs/func_callerid.c10
-rw-r--r--funcs/func_cdr.c15
-rw-r--r--funcs/func_channel.c28
-rw-r--r--funcs/func_dialplan.c12
-rw-r--r--funcs/func_frame_trace.c5
-rw-r--r--funcs/func_global.c6
-rw-r--r--funcs/func_groupcount.c19
-rw-r--r--funcs/func_jitterbuffer.c5
-rw-r--r--funcs/func_math.c5
-rw-r--r--funcs/func_odbc.c5
-rw-r--r--funcs/func_pitchshift.c5
-rw-r--r--funcs/func_speex.c5
-rw-r--r--funcs/func_strings.c15
-rw-r--r--funcs/func_volume.c9
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);