aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2007-04-19 02:51:21 +0000
committertilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2007-04-19 02:51:21 +0000
commit1fc68129dcf103729cbcde5cf72742684aed5ca7 (patch)
tree94d19b0213fbc581e070b6f908dd1993aa36d58a
parenta839730dbad7e57168da37653318ddd19b5bd421 (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
-rw-r--r--funcs/func_callerid.c6
-rw-r--r--funcs/func_cdr.c4
-rw-r--r--funcs/func_groupcount.c3
-rw-r--r--funcs/func_timeout.c6
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;