pbx: Prevent Realtime switch crash on invalid priority
authorSean Bright <sean.bright@gmail.com>
Wed, 25 Sep 2019 16:01:33 +0000 (12:01 -0400)
committerSean Bright <sean.bright@gmail.com>
Thu, 26 Sep 2019 09:48:25 +0000 (04:48 -0500)
pbx_extension_helper takes two 'context' arguments. One (con) is a
pointer directly to a 'struct ast_context' and the other (context) is
the name of the context. In all cases, one of these arguments is NULL
and the other is non-NULL.

Functions that are ultimately called by pbx_extension_helper expect that
'context' will be non-NULL, so we set it unconditionally on entry into
this function.

ASTERISK-28534 #close

Change-Id: Ifbbc5e71440afd80efd441f7a9d72e8b10b6f47d

main/pbx.c

index 83bfb90..8b869f1 100644 (file)
@@ -2884,6 +2884,11 @@ static int pbx_extension_helper(struct ast_channel *c, struct ast_context *con,
        int matching_action = (action == E_MATCH || action == E_CANMATCH || action == E_MATCHMORE);
 
        ast_rdlock_contexts();
+
+       if (!context) {
+               context = con->name;
+       }
+
        if (found)
                *found = 0;