From 6ef599255d5f0967d98c1d91066d4d0dafa892f6 Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Mon, 28 Jan 2008 14:45:20 +0000 Subject: [PATCH] protect config access. fix test. git-svn-id: file:///svn/unbound/trunk@908 be551aaa-1e26-0410-a405-d3ace91eadb9 --- doc/Changelog | 1 + libunbound/worker.c | 12 ++++++++++++ testdata/05-asynclook.tpkg | Bin 1863 -> 1873 bytes 3 files changed, 13 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 69558ddf1..4ab938aeb 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -9,6 +9,7 @@ - random generator cleanup - RND_STATE_SIZE removed, and instead a super-rnd can be passed at init to chain init random states. - test also does lock checks if available. + - protect config access in libworker_setup(). 25 January 2008: Wouter - added tpkg for asynclook and library use. diff --git a/libunbound/worker.c b/libunbound/worker.c index 009e08b8f..6b55b1d58 100644 --- a/libunbound/worker.c +++ b/libunbound/worker.c @@ -108,8 +108,14 @@ libworker_setup(struct ub_val_ctx* ctx, int is_bg) } w->thread_num = w->env->alloc->thread_num; alloc_set_id_cleanup(w->env->alloc, &libworker_alloc_cleanup, w); + if(!w->is_bg || w->is_bg_thread) { + lock_basic_lock(&ctx->cfglock); + } w->env->scratch = regional_create_custom(cfg->msg_buffer_size); w->env->scratch_buffer = ldns_buffer_new(cfg->msg_buffer_size); + if(!w->is_bg || w->is_bg_thread) { + lock_basic_unlock(&ctx->cfglock); + } if(!w->env->scratch || !w->env->scratch_buffer) { libworker_delete(w); return NULL; @@ -139,11 +145,17 @@ libworker_setup(struct ub_val_ctx* ctx, int is_bg) libworker_delete(w); return NULL; } + if(!w->is_bg || w->is_bg_thread) { + lock_basic_lock(&ctx->cfglock); + } w->back = outside_network_create(w->base, cfg->msg_buffer_size, (size_t)cfg->outgoing_num_ports, cfg->out_ifs, cfg->num_out_ifs, cfg->do_ip4, cfg->do_ip6, -1, cfg->do_tcp?cfg->outgoing_num_tcp:0, w->env->infra_cache, w->env->rnd); + if(!w->is_bg || w->is_bg_thread) { + lock_basic_unlock(&ctx->cfglock); + } if(!w->back) { libworker_delete(w); return NULL; diff --git a/testdata/05-asynclook.tpkg b/testdata/05-asynclook.tpkg index df7e08888a6ccfc92463cc5a2e1e0bfee756daf1..1fd0e332f66be0ff6d493a4c4d286e831e5a07e1 100644 GIT binary patch literal 1873 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 Bu+jhk -- 2.47.2