]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Fix data race on fctx->vresult in validated()
authorOndřej Surý <ondrej@isc.org>
Thu, 19 Mar 2026 02:42:08 +0000 (03:42 +0100)
committerOndřej Surý <ondrej@isc.org>
Fri, 20 Mar 2026 02:22:53 +0000 (03:22 +0100)
Move the write to fctx->vresult after LOCK(&fctx->lock).  The field was
being set before acquiring the lock, but dns_resolver_logfetch() reads
it under the same lock from another thread.

(cherry picked from commit a2bd8339095c99b4f0faea0f1bc39128c048c3aa)

lib/dns/resolver.c

index d114180401c644c80082bdd504091906efea4535..ca0c62cbbeaed847a903f0817f472db6c8ad3315 100644 (file)
@@ -5335,9 +5335,9 @@ validated(void *arg) {
        addrinfo = valarg->addrinfo;
 
        message = val->message;
-       fctx->vresult = val->result;
 
        LOCK(&fctx->lock);
+       fctx->vresult = val->result;
        ISC_LIST_UNLINK(fctx->validators, val, link);
        fctx->validator = NULL;
        UNLOCK(&fctx->lock);