bind9/lib/dns
Diego Fronza cde6227a68 Properly handling dns_message_t shared references
This commit fix the problems that arose when moving the dns_message_t
object from fetchctx_t to the query structure.

Since the lifetime of query objects are different than that of a fetchctx
and the dns_message_t object held by the query may be being used by some
external module, e.g. validator, even after the query may have been destroyed,
propery handling of the references to the message were added in this commit to
avoid accessing an already destroyed object.

Specifically, in rctx_done(), a reference to the message is attached at
the beginning of the function and detached at the end, since a possible call
to fctx_cancelquery() would release the dns_message_t object, and in the next
lines of code a call to rctx_nextserver() or rctx_chaseds() would require
a valid pointer to the same object.

In valcreate() a new reference is attached to the message object, this
ensures that if the corresponding query object is destroyed before the
validator attempts to access it, no invalid pointer access occurs.

In validated() we have to attach a new reference to the message, since
we destroy the validator object at the beginning of the function,
and we need access to the message in the next lines of the same function.

rctx_nextserver() and rctx_chaseds() functions were adapted to receive
a new parameter of dns_message_t* type, this was so they could receive a
valid reference to a dns_message_t since using the response context respctx_t
to access the message through rctx->query->rmessage could lead to an already
released reference due to the query being canceled.
2020-09-29 08:22:08 +02:00
..
include Refactored dns_message_t for using attach/detach semantics 2020-09-29 08:22:08 +02:00
rdata update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
tests Refactored dns_message_t for using attach/detach semantics 2020-09-29 08:22:08 +02:00
win32 Refactored dns_message_t for using attach/detach semantics 2020-09-29 08:22:08 +02:00
.gitignore 4394. [func] Add rndc command "dnstap-reopen" to close and 2016-06-24 09:37:04 +10:00
acl.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
adb.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
api Update library API versions 2020-09-16 22:34:06 +02:00
badcache.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
byaddr.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
cache.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
callbacks.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
catz.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
client.c Refactored dns_message_t for using attach/detach semantics 2020-09-29 08:22:08 +02:00
clientinfo.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
compress.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
db.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
dbiterator.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
dbtable.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
diff.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
dispatch.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
dlz.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
dns64.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
dnsrps.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
dnssec.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
dnstap.c Refactored dns_message_t for using attach/detach semantics 2020-09-29 08:22:08 +02:00
dnstap.proto fix spelling errors reported by Fossies. 2020-02-21 15:05:08 +11:00
ds.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
dst_api.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
dst_internal.h update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
dst_openssl.h update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
dst_parse.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
dst_parse.h update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
dst_pkcs11.h update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
dst_result.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
dyndb.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
ecs.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
fixedname.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
forward.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
gen-unix.h update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
gen-win32.h update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
gen.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
geoip2.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
gssapi_link.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
gssapictx.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
hmac_link.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
ipkeylist.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
iptable.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
journal.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
kasp.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
key.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
keydata.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
keymgr.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
keytable.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
lib.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
log.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
lookup.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
Makefile.am Fix function overrides in unit tests on macOS 2020-09-28 09:09:21 +02:00
master.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
masterdump.c rndc dumpdb -expired: print when RRsets expired 2020-09-23 16:09:26 +02:00
message.c Refactored dns_message_t for using attach/detach semantics 2020-09-29 08:22:08 +02:00
name.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
ncache.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
nsec.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
nsec3.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
nta.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
openssl_link.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
openssldh_link.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
opensslecdsa_link.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
openssleddsa_link.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
opensslrsa_link.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
order.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
peer.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
pkcs11.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
pkcs11ecdsa_link.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
pkcs11eddsa_link.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
pkcs11rsa_link.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
portlist.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
private.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
rbt.c Remove the memmove call on dns_rbtnode_t structure that contains atomics 2020-09-21 08:58:20 +00:00
rbtdb.c rndc dumpdb -expired: print when RRsets expired 2020-09-23 16:09:26 +02:00
rbtdb.h update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
rcode.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
rdata.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
rdatalist.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
rdatalist_p.h update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
rdataset.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
rdatasetiter.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
rdataslab.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
request.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
resolver.c Properly handling dns_message_t shared references 2020-09-29 08:22:08 +02:00
result.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
rootns.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
rpz.c Fix updating summary RPZ DB for mixed-case RPZs 2020-09-21 09:28:36 +02:00
rriterator.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
rrl.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
sdb.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
sdlz.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
soa.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
ssu.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
ssu_external.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
stats.c Update comments to have binary notation 2020-09-29 10:36:07 +10:00
tcpmsg.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
time.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
timer.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
tkey.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
tsec.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
tsig.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
tsig_p.h update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
ttl.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
update.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
validator.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
view.c Address lock order inversions. 2020-09-23 01:13:28 +00:00
xfrin.c Refactored dns_message_t for using attach/detach semantics 2020-09-29 08:22:08 +02:00
zone.c Refactored dns_message_t for using attach/detach semantics 2020-09-29 08:22:08 +02:00
zone_p.h update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
zonekey.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
zoneverify.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
zt.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00