]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 61681 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Thu, 19 Apr 2007 02:51:21 +0000 (02:51 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Thu, 19 Apr 2007 02:51:21 +0000 (02:51 +0000)
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

funcs/func_callerid.c
funcs/func_cdr.c
funcs/func_groupcount.c
funcs/func_timeout.c

index e026d67a9b0fdeefa4cc5da2d755c9b26eeb5973..c8fd1bb9e2193d1cceb10dd6bea1ad8e8bc94b6c 100644 (file)
@@ -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)) {
index 4f1c457c0ff10bf459dc406b01157ea64c893848..951e980ae4deb91cf5dda0bf18037bdaed659817 100644 (file)
@@ -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);
index 2be3f831d99d4c6acc32ced55a6c6395d62c9145..fb7ec57e293dc6c33d2114a088792e3df55c8477 100644 (file)
@@ -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)) {
index a400a95ab80304a35e5e409328c7bd36947cb6ca..1da11e54a60066e04314bef9d937fa0b5a52648d 100644 (file)
@@ -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;