summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTilghman Lesher <tilghman@meg.abyt.es>2007-04-19 02:51:21 +0000
committerTilghman Lesher <tilghman@meg.abyt.es>2007-04-19 02:51:21 +0000
commitb230918437c1e87cba42b162a3ac6fef7cde8e1d (patch)
tree94d19b0213fbc581e070b6f908dd1993aa36d58a
parent261b3c4ec083faf03edd59cbfeb5f1039d6814b6 (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: https://origsvn.digium.com/svn/asterisk/trunk@61682 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-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;