3425. [bug] "acacheentry" reference counting was broken resulting

in use after free. [RT #31908]
This commit is contained in:
Mark Andrews 2012-11-27 16:03:36 +11:00
parent 3882eec38e
commit db899cbc4d
2 changed files with 5 additions and 2 deletions

View file

@ -1,3 +1,6 @@
3425. [bug] "acacheentry" reference counting was broken resulting
in use after free. [RT #31908]
3424. [func] dnssec-dsfromkey now emits the hash without spaces.
[RT #31951]

View file

@ -8936,11 +8936,10 @@ acache_callback(dns_acacheentry_t *entry, void **arg) {
INSIST(acarray[count].cbarg == cbarg);
isc_mem_put(rbtdb->common.mctx, cbarg, sizeof(acache_cbarg_t));
acarray[count].cbarg = NULL;
dns_acache_detachentry(&entry);
} else
isc_mem_put(rbtdb->common.mctx, cbarg, sizeof(acache_cbarg_t));
dns_acache_detachentry(&entry);
NODE_UNLOCK(nodelock, isc_rwlocktype_write);
dns_db_detachnode((dns_db_t *)rbtdb, (dns_dbnode_t **)(void*)&rbtnode);
@ -9032,6 +9031,7 @@ rdataset_setadditional(dns_rdataset_t *rdataset, dns_rdatasetadditional_t type,
acache_callback, newcbarg, &newentry);
if (result != ISC_R_SUCCESS)
goto fail;
/* Set cache data in the new entry. */
result = dns_acache_setentry(acache, newentry, zone, db,
version, node, fname);