]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
grab a write lock before updating header->trust
authorMark Andrews <marka@isc.org>
Fri, 26 Feb 2010 00:23:55 +0000 (00:23 +0000)
committerMark Andrews <marka@isc.org>
Fri, 26 Feb 2010 00:23:55 +0000 (00:23 +0000)
lib/dns/rbtdb.c

index 1db26ba12eb19825c747e9bbc7b5d03202b83a32..24bc43bad9bbaf87019819498dcd1d42f1d43269 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: rbtdb.c,v 1.292.8.6.2.1 2010/02/25 04:53:45 marka Exp $ */
+/* $Id: rbtdb.c,v 1.292.8.6.2.2 2010/02/26 00:23:55 marka Exp $ */
 
 /*! \file */
 
@@ -7668,10 +7668,16 @@ rdataset_getclosest(dns_rdataset_t *rdataset, dns_name_t *name,
 
 static void
 rdataset_settrust(dns_rdataset_t *rdataset, dns_trust_t trust) {
+       dns_rbtdb_t *rbtdb = rdataset->private1;
+       dns_rbtnode_t *rbtnode = rdataset->private2;
        rdatasetheader_t *header = rdataset->private3;
 
        header--;
+       NODE_LOCK(&rbtdb->node_locks[rbtnode->locknum].lock,
+                 isc_rwlocktype_write);
        header->trust = rdataset->trust = trust;
+       NODE_UNLOCK(&rbtdb->node_locks[rbtnode->locknum].lock,
+                 isc_rwlocktype_write);
 }
 
 static void