From: Evan Hunt Date: Thu, 12 Jul 2012 20:57:58 +0000 (-0700) Subject: fix race in ISC_QUEUE_PUSH X-Git-Tag: v9.9.1-P2^0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=447a6514e96cb08a6604f95972e9efab89625450;p=thirdparty%2Fbind9.git fix race in ISC_QUEUE_PUSH --- diff --git a/CHANGES b/CHANGES index 83b401a2257..2bf9dd00df0 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,7 @@ --- 9.9.1-P2 released --- +3349. [bug] Change #3345 was incomplete. [RT #30233] + 3346. [security] Bad-cache data could be used before it was initialized, causing an assert. [RT #30025] diff --git a/lib/isc/include/isc/queue.h b/lib/isc/include/isc/queue.h index 6f76bd2750e..1bc9d5b4d17 100644 --- a/lib/isc/include/isc/queue.h +++ b/lib/isc/include/isc/queue.h @@ -106,10 +106,10 @@ LOCK(&(queue).taillock); \ headlocked = ISC_TRUE; \ } \ - if ((queue).tail != NULL) \ - (queue).tail->link.next = (elt); \ (elt)->link.prev = (queue).tail; \ (elt)->link.next = NULL; \ + if ((queue).tail != NULL) \ + (queue).tail->link.next = (elt); \ (queue).tail = (elt); \ UNLOCK(&(queue).taillock); \ if (headlocked) { \