diff options
author | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-04-19 02:51:21 +0000 |
---|---|---|
committer | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-04-19 02:51:21 +0000 |
commit | 1fc68129dcf103729cbcde5cf72742684aed5ca7 (patch) | |
tree | 94d19b0213fbc581e070b6f908dd1993aa36d58a /funcs | |
parent | a839730dbad7e57168da37653318ddd19b5bd421 (diff) |
Merged revisions 61681 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
................
r61681 | tilghman | 2007-04-18 21:45:05 -0500 (Wed, 18 Apr 2007) | 13 lines
Merged revisions 61680 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r61680 | tilghman | 2007-04-18 21:30:18 -0500 (Wed, 18 Apr 2007) | 5 lines
Bug 9557 - Specifying the GetVar AMI action without a Channel parameter can
cause Asterisk to crash. The reason this needs to be fixed in the functions
instead of in AMI is because Channel can legitimately be NULL, such as when
retrieving global variables.
........
................
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@61682 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'funcs')
-rw-r--r-- | funcs/func_callerid.c | 6 | ||||
-rw-r--r-- | funcs/func_cdr.c | 4 | ||||
-rw-r--r-- | funcs/func_groupcount.c | 3 | ||||
-rw-r--r-- | funcs/func_timeout.c | 6 |
4 files changed, 15 insertions, 4 deletions
diff --git a/funcs/func_callerid.c b/funcs/func_callerid.c index e026d67a9..c8fd1bb9e 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 4f1c457c0..951e980ae 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 2be3f831d..fb7ec57e2 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 a400a95ab..1da11e54a 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; |