From: Mark Michelson Date: Wed, 11 Mar 2009 14:28:40 +0000 (+0000) Subject: Fix segfault when dialing a typo'd queue X-Git-Tag: 1.6.2.0-beta1~53 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d7d817d687cf1f42405e51ab58cfe389bda7b4b2;p=thirdparty%2Fasterisk.git Fix segfault when dialing a typo'd queue If trying to dial a non-existent queue, there would be a segfault when attempting to access q->weight, even though q was NULL. This problem was introduced during the queue-reset merge and thus only affects trunk. (closes issue #14643) Reported by: alecdavis git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@181244 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/apps/app_queue.c b/apps/app_queue.c index 6b7ddd5c60..f9cc878668 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -1826,11 +1826,13 @@ static struct call_queue *load_realtime_queue(const char *queuename) ast_variables_destroy(queue_vars); } /* update the use_weight value if the queue's has gained or lost a weight */ - if (!q->weight && prev_weight) { - ast_atomic_fetchadd_int(&use_weight, -1); - } - if (q->weight && !prev_weight) { - ast_atomic_fetchadd_int(&use_weight, +1); + if (q) { + if (!q->weight && prev_weight) { + ast_atomic_fetchadd_int(&use_weight, -1); + } + if (q->weight && !prev_weight) { + ast_atomic_fetchadd_int(&use_weight, +1); + } } /* Other cases will end up with the proper value for use_weight */ ao2_unlock(queues);