diff --git a/funcs/func_callerid.c b/funcs/func_callerid.c index e026d67a9b0fdeefa4cc5da2d755c9b26eeb5973..c8fd1bb9e2193d1cceb10dd6bea1ad8e8bc94b6c 100644 --- a/funcs/func_callerid.c +++ b/funcs/func_callerid.c @@ -60,7 +60,9 @@ static int callerid_read(struct ast_channel *chan, const char *cmd, char *data, { char *opt = data; - /* XXX we are not always clearing the buffer. Is this correct ? */ + if (!chan) + return -1; + if (strchr(opt, '|')) { char name[80], num[80]; @@ -116,7 +118,7 @@ static int callerid_read(struct ast_channel *chan, const char *cmd, char *data, static int callerid_write(struct ast_channel *chan, const char *cmd, char *data, const char *value) { - if (!value) + if (!value || !chan) return -1; if (!strncasecmp("all", data, 3)) { diff --git a/funcs/func_cdr.c b/funcs/func_cdr.c index 4f1c457c0ff10bf459dc406b01157ea64c893848..951e980ae4deb91cf5dda0bf18037bdaed659817 100644 --- a/funcs/func_cdr.c +++ b/funcs/func_cdr.c @@ -59,7 +59,7 @@ static int cdr_read(struct ast_channel *chan, const char *cmd, char *parse, { char *ret; struct ast_flags flags = { 0 }; - struct ast_cdr *cdr = chan->cdr; + struct ast_cdr *cdr = chan ? chan->cdr : NULL; AST_DECLARE_APP_ARGS(args, AST_APP_ARG(variable); AST_APP_ARG(options); @@ -96,7 +96,7 @@ static int cdr_write(struct ast_channel *chan, const char *cmd, char *parse, AST_APP_ARG(options); ); - if (ast_strlen_zero(parse) || !value) + if (ast_strlen_zero(parse) || !value || !chan) return -1; AST_STANDARD_APP_ARGS(args, parse); diff --git a/funcs/func_groupcount.c b/funcs/func_groupcount.c index 2be3f831d99d4c6acc32ced55a6c6395d62c9145..fb7ec57e293dc6c33d2114a088792e3df55c8477 100644 --- a/funcs/func_groupcount.c +++ b/funcs/func_groupcount.c @@ -158,6 +158,9 @@ static int group_list_function_read(struct ast_channel *chan, const char *cmd, char tmp1[1024] = ""; char tmp2[1024] = ""; + if (!chan) + return -1; + headp = &chan->varshead; AST_LIST_TRAVERSE(headp, current, entries) { if (!strncmp(ast_var_name(current), GROUP_CATEGORY_PREFIX "_", strlen(GROUP_CATEGORY_PREFIX) + 1)) { diff --git a/funcs/func_timeout.c b/funcs/func_timeout.c index a400a95ab80304a35e5e409328c7bd36947cb6ca..1da11e54a60066e04314bef9d937fa0b5a52648d 100644 --- a/funcs/func_timeout.c +++ b/funcs/func_timeout.c @@ -46,6 +46,9 @@ static int timeout_read(struct ast_channel *chan, const char *cmd, char *data, { time_t myt; + if (!chan) + return -1; + if (!data) { ast_log(LOG_ERROR, "Must specify type of timeout to get.\n"); return -1; @@ -91,6 +94,9 @@ static int timeout_write(struct ast_channel *chan, const char *cmd, char *data, char timestr[64]; struct tm myt; + if (!chan) + return -1; + if (!data) { ast_log(LOG_ERROR, "Must specify type of timeout to set.\n"); return -1;