[Freeipa-devel] [PATCH 0061] Add missing DNS view attach/detach to LDAP instance management code

Adam Tkac atkac at redhat.com
Mon Sep 24 14:20:35 UTC 2012


On Thu, Sep 13, 2012 at 01:37:37PM +0200, Petr Spacek wrote:
> Hello,
> 
>     Add missing DNS view attach/detach to LDAP instance management code.
>     This fixes race condition in BIND shutdown after SIGINT:
>     - failing assert caused by use-after-free in dns_zt_find():
>     (((zt) != ((void *)0)) && (((const isc__magic_t *)(zt))->magic
>     == ((('Z') << 24 | ('T') << 16 | ('b') << 8 | ('l')))))

Ack.

> From cc612198a0b7d662557a7c4f71732135e8f43025 Mon Sep 17 00:00:00 2001
> From: Petr Spacek <pspacek at redhat.com>
> Date: Thu, 13 Sep 2012 13:08:36 +0200
> Subject: [PATCH] Add missing DNS view attach/detach to LDAP instance
>  management code. This fixes race condition in BIND shutdown
>  after SIGINT: - failing assert caused by use-after-free in
>  dns_zt_find(): (((zt) != ((void *)0)) && (((const
>  isc__magic_t *)(zt))->magic == ((('Z') << 24 | ('T') << 16
>  | ('b') << 8 | ('l')))))
> 
> Signed-off-by: Petr Spacek <pspacek at redhat.com>
> ---
>  src/ldap_helper.c | 9 ++++-----
>  1 file changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/src/ldap_helper.c b/src/ldap_helper.c
> index 3b49de809738fef18cae10c38fd3d9c33eef5141..658b960f50b461fa602edf51e955f3bdd4769e1d 100644
> --- a/src/ldap_helper.c
> +++ b/src/ldap_helper.c
> @@ -333,6 +333,7 @@ new_ldap_instance(isc_mem_t *mctx, const char *db_name,
>  	unsigned int i;
>  	isc_result_t result;
>  	ldap_instance_t *ldap_inst;
> +	dns_view_t *view = NULL;
>  	ld_string_t *auth_method_str = NULL;
>  	setting_t ldap_settings[] = {
>  		{ "uri",	 no_default_string		},
> @@ -369,10 +370,9 @@ new_ldap_instance(isc_mem_t *mctx, const char *db_name,
>  
>  	isc_mem_attach(mctx, &ldap_inst->mctx);
>  	ldap_inst->db_name = db_name;
> -	ldap_inst->view = dns_dyndb_get_view(dyndb_args);
> +	view = dns_dyndb_get_view(dyndb_args);
> +	dns_view_attach(view, &ldap_inst->view);
>  	ldap_inst->zmgr = dns_dyndb_get_zonemgr(dyndb_args);
> -	/* commented out for now, cause named to hang */
> -	//dns_view_attach(view, &ldap_inst->view);
>  
>  	CHECK(zr_create(mctx, &ldap_inst->zone_register));
>  
> @@ -616,8 +616,7 @@ destroy_ldap_instance(ldap_instance_t **ldap_instp)
>  	str_destroy(&ldap_inst->fake_mname);
>  	str_destroy(&ldap_inst->ldap_hostname);
>  
> -	/* commented out for now, causes named to hang */
> -	//dns_view_detach(&ldap_inst->view);
> +	dns_view_detach(&ldap_inst->view);
>  
>  	DESTROYLOCK(&ldap_inst->kinit_lock);
>  
> -- 
> 1.7.11.4
> 


-- 
Adam Tkac, Red Hat, Inc.




More information about the Freeipa-devel mailing list