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/branches/1.4@61681 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Tilghman Lesher
2007-04-19 02:45:05 +00:00
parent b823c62709
commit 1572777fa0
6 changed files with 20 additions and 8 deletions

View File

@@ -43,7 +43,9 @@ static int callerid_read(struct ast_channel *chan, 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];
@@ -98,7 +100,7 @@ static int callerid_read(struct ast_channel *chan, char *cmd, char *data,
static int callerid_write(struct ast_channel *chan, char *cmd, char *data,
const char *value)
{
if (!value)
if (!value || !chan)
return -1;
if (!strncasecmp("all", data, 3)) {

View File

@@ -57,7 +57,7 @@ static int cdr_read(struct ast_channel *chan, 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);
@@ -94,7 +94,7 @@ static int cdr_write(struct ast_channel *chan, 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);

View File

@@ -157,6 +157,9 @@ static int group_list_function_read(struct ast_channel *chan, 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)) {

View File

@@ -48,7 +48,7 @@ static int language_read(struct ast_channel *chan, char *cmd, char *data,
"LANGUAGE() is deprecated; use CHANNEL(language) instead.\n");
}
ast_copy_string(buf, chan->language, len);
ast_copy_string(buf, chan ? chan->language : "", len);
return 0;
}
@@ -62,7 +62,7 @@ static int language_write(struct ast_channel *chan, char *cmd, char *data,
"LANGUAGE() is deprecated; use CHANNEL(language) instead.\n");
}
if (value)
if (chan && value)
ast_string_field_set(chan, language, value);
return 0;

View File

@@ -46,7 +46,7 @@ static int moh_read(struct ast_channel *chan, char *cmd, char *data,
ast_log(LOG_WARNING, "MUSICCLASS() is deprecated; use CHANNEL(musicclass) instead.\n");
}
ast_copy_string(buf, chan->musicclass, len);
ast_copy_string(buf, chan ? chan->musicclass : "", len);
return 0;
}
@@ -59,6 +59,7 @@ static int moh_write(struct ast_channel *chan, char *cmd, char *data,
ast_log(LOG_WARNING, "MUSICCLASS() is deprecated; use CHANNEL(musicclass) instead.\n");
}
if (chan)
ast_string_field_set(chan, musicclass, value);
return 0;

View File

@@ -45,6 +45,9 @@ static int timeout_read(struct ast_channel *chan, 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;
@@ -90,6 +93,9 @@ static int timeout_write(struct ast_channel *chan, 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;