]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix #220: auth-zone section in config may lead to segfault.
authorGeorge Thessalonikefs <george@nlnetlabs.nl>
Wed, 15 Apr 2020 15:57:02 +0000 (17:57 +0200)
committerGeorge Thessalonikefs <george@nlnetlabs.nl>
Wed, 15 Apr 2020 15:57:02 +0000 (17:57 +0200)
doc/Changelog
services/authzone.c

index 7e92f5d8ac3b90c9d2a2e97be20f18f4162edaf3..fd271ea5f4082d0444a551ed0ec6ad5eb3776841 100644 (file)
@@ -1,3 +1,6 @@
+15 April 2020: George
+       - Fix #220: auth-zone section in config may lead to segfault.
+
 7 April 2020: Wouter
        - Merge PR #214 from gearnode: unbound-control-setup recreate
          certificates.  With the -r option the certificates are created
index 70fe27a5edc60afa8ec47fa82d5e7f965d425e00..9b0568c8c8291f5664d64f11da86157a37b37d52 100644 (file)
@@ -5334,7 +5334,7 @@ void auth_xfer_transfer_lookup_callback(void* arg, int rcode, sldns_buffer* buf,
        log_assert(xfr->task_transfer);
        lock_basic_lock(&xfr->lock);
        env = xfr->task_transfer->env;
-       if(env->outnet->want_to_quit) {
+       if(!env || env->outnet->want_to_quit) {
                lock_basic_unlock(&xfr->lock);
                return; /* stop on quit */
        }
@@ -5773,7 +5773,7 @@ auth_xfer_transfer_timer_callback(void* arg)
        log_assert(xfr->task_transfer);
        lock_basic_lock(&xfr->lock);
        env = xfr->task_transfer->env;
-       if(env->outnet->want_to_quit) {
+       if(!env || env->outnet->want_to_quit) {
                lock_basic_unlock(&xfr->lock);
                return; /* stop on quit */
        }
@@ -5815,7 +5815,7 @@ auth_xfer_transfer_tcp_callback(struct comm_point* c, void* arg, int err,
        log_assert(xfr->task_transfer);
        lock_basic_lock(&xfr->lock);
        env = xfr->task_transfer->env;
-       if(env->outnet->want_to_quit) {
+       if(!env || env->outnet->want_to_quit) {
                lock_basic_unlock(&xfr->lock);
                return 0; /* stop on quit */
        }
@@ -5896,7 +5896,7 @@ auth_xfer_transfer_http_callback(struct comm_point* c, void* arg, int err,
        log_assert(xfr->task_transfer);
        lock_basic_lock(&xfr->lock);
        env = xfr->task_transfer->env;
-       if(env->outnet->want_to_quit) {
+       if(!env || env->outnet->want_to_quit) {
                lock_basic_unlock(&xfr->lock);
                return 0; /* stop on quit */
        }
@@ -6110,7 +6110,7 @@ auth_xfer_probe_timer_callback(void* arg)
        log_assert(xfr->task_probe);
        lock_basic_lock(&xfr->lock);
        env = xfr->task_probe->env;
-       if(env->outnet->want_to_quit) {
+       if(!env || env->outnet->want_to_quit) {
                lock_basic_unlock(&xfr->lock);
                return; /* stop on quit */
        }
@@ -6146,7 +6146,7 @@ auth_xfer_probe_udp_callback(struct comm_point* c, void* arg, int err,
        log_assert(xfr->task_probe);
        lock_basic_lock(&xfr->lock);
        env = xfr->task_probe->env;
-       if(env->outnet->want_to_quit) {
+       if(!env || env->outnet->want_to_quit) {
                lock_basic_unlock(&xfr->lock);
                return 0; /* stop on quit */
        }
@@ -6391,7 +6391,7 @@ void auth_xfer_probe_lookup_callback(void* arg, int rcode, sldns_buffer* buf,
        log_assert(xfr->task_probe);
        lock_basic_lock(&xfr->lock);
        env = xfr->task_probe->env;
-       if(env->outnet->want_to_quit) {
+       if(!env || env->outnet->want_to_quit) {
                lock_basic_unlock(&xfr->lock);
                return; /* stop on quit */
        }
@@ -6468,7 +6468,7 @@ auth_xfer_timer(void* arg)
        log_assert(xfr->task_nextprobe);
        lock_basic_lock(&xfr->lock);
        env = xfr->task_nextprobe->env;
-       if(env->outnet->want_to_quit) {
+       if(!env || env->outnet->want_to_quit) {
                lock_basic_unlock(&xfr->lock);
                return; /* stop on quit */
        }