]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
manager: Fix crash when appending a manager channel variable
authorMatthew Jordan <mjordan@digium.com>
Sat, 28 Sep 2013 20:20:42 +0000 (20:20 +0000)
committerMatthew Jordan <mjordan@digium.com>
Sat, 28 Sep 2013 20:20:42 +0000 (20:20 +0000)
In r399887, a minor performance improvement was introduced by not allocating
the manager variable struct if it wasn't used. Unfortunately, when directly
accessing an ast_channel struct, manager assumed that the struct was always
allocated. Since this was no longer the case, things got a bit crashy.

This fixes that problem by simply bypassing appending variables if the manager
channel variable struct isn't there.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400058 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/manager.c

index c8b0e4708ebc707dc4c3e971565907e3df9d031d..00649dafaa5cd8247f1ab818c552ea45e886da3f 100644 (file)
@@ -5934,6 +5934,10 @@ static void append_channel_vars(struct ast_str **pbuf, struct ast_channel *chan)
 
        vars = ast_channel_get_manager_vars(chan);
 
+       if (!vars) {
+               return;
+       }
+
        AST_LIST_TRAVERSE(vars, var, entries) {
                ast_str_append(pbuf, 0, "ChanVariable(%s): %s=%s\r\n", ast_channel_name(chan), var->name, var->value);
        }