diff options
author | Matthew Jordan <mjordan@digium.com> | 2015-04-09 02:05:04 +0000 |
---|---|---|
committer | Matthew Jordan <mjordan@digium.com> | 2015-04-09 02:05:04 +0000 |
commit | e05c8ae68e95367ea60fdc5e8a5f2cf7f24e0f32 (patch) | |
tree | 5a3141eba7195bc862b1e1041cce9d7f260af635 /apps/app_queue.c | |
parent | f21b45db4920debe736b710951b4860fb420f306 (diff) |
apps/app_queue: Prevent possible crash when evaluating queue penalty rules
Although it only occurred once, a crash occurred when a queue attempted to
evaluate a queue penalty rule that appeared to have already been destroyed.
In many locations in app_queue, a test is done to see if qe->pr is NULL;
however, when we dispose of a queue's penalty rules, we don't set the pointer
to NULL after free'ing it. This patch does that to prevent any dangling
pointers from lingering on the queue object.
Review: https://reviewboard.asterisk.org/r/4522
ASTERISK-23319 #close
Reported by: Vadim
patches:
rb4552.patch submitted by Stefan Engström (License 6691)
........
Merged revisions 434448 from http://svn.asterisk.org/svn/asterisk/branches/11
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434449 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps/app_queue.c')
-rw-r--r-- | apps/app_queue.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c index 2e6b10c4d..6d45be370 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -3900,6 +3900,7 @@ static void leave_queue(struct queue_ent *qe) while ((pr_iter = AST_LIST_REMOVE_HEAD(&qe->qe_rules, list))) { ast_free(pr_iter); } + qe->pr = NULL; snprintf(posstr, sizeof(posstr), "%d", qe->pos); pbx_builtin_setvar_helper(qe->chan, "QUEUEPOSITION", posstr); } else { |