]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Release unused key file IO lock objects
authorOndřej Surý <ondrej@isc.org>
Wed, 7 Dec 2022 15:45:33 +0000 (16:45 +0100)
committerOndřej Surý <ondrej@isc.org>
Thu, 8 Dec 2022 09:56:31 +0000 (10:56 +0100)
Due to off-by-one error in zonemgr_keymgmt_delete, unused key file IO
lock objects were never freed and they were kept until the server
shutdown.  Adjust the returned value by -1 to accomodate the fact that
the atomic_fetch_*() functions return the value before the operation and
not current value after the operation.

(cherry picked from commit fb1acd6736609360f79a498d44dffcceb8ca0f54)

lib/dns/zone.c

index 47e506b7df62622ab396a90a60d150292c42bab9..04891f509a6224b8218dc4fbccf69665c4e7d4c9 100644 (file)
@@ -18959,7 +18959,7 @@ zonemgr_keymgmt_delete(dns_zonemgr_t *zmgr, dns_zone_t *zone) {
                if (dns_name_equal(kfio->name, &zone->origin)) {
                        unsigned int count;
 
-                       count = atomic_fetch_sub_relaxed(&kfio->count, 1);
+                       count = atomic_fetch_sub_relaxed(&kfio->count, 1) - 1;
                        if (count > 0) {
                                /* Keep the entry. */
                                break;