From: Mark Andrews Date: Fri, 26 Feb 2010 00:23:55 +0000 (+0000) Subject: grab a write lock before updating header->trust X-Git-Tag: v9.7.0-P1~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a701dbf006ef88567f8221298949c234407a433b;p=thirdparty%2Fbind9.git grab a write lock before updating header->trust --- diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c index 1db26ba12eb..24bc43bad9b 100644 --- a/lib/dns/rbtdb.c +++ b/lib/dns/rbtdb.c @@ -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