On Tue, Oct 02, 2012 at 03:21:08PM +0200, Petr Spacek wrote:
> Hello,
> 
> Fix potential crash caused by failing zone_register allocation.
> 
> Problematic call flow:
> new_ldap_instance -> zr_create (returns failure) ->
> destroy_ldap_instance -> zr_get_rbt (*crash*)

Ack

> From 9d96a9c4a4ac5b592ed5874132e0618b1b259de0 Mon Sep 17 00:00:00 2001
> From: Petr Spacek <pspa...@redhat.com>
> Date: Tue, 2 Oct 2012 15:16:27 +0200
> Subject: [PATCH] Fix potential crash caused by failing zone_register
>  allocation.
> 
> Signed-off-by: Petr Spacek <pspa...@redhat.com>
> ---
>  src/ldap_helper.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/src/ldap_helper.c b/src/ldap_helper.c
> index 
> 38d86afa521dcf0e6b58ebb38635ff0fffbedd2a..629c76732c86af2a614e589a5afff18136068a66
>  100644
> --- a/src/ldap_helper.c
> +++ b/src/ldap_helper.c
> @@ -516,7 +516,7 @@ destroy_ldap_instance(ldap_instance_t **ldap_instp)
>  {
>       ldap_instance_t *ldap_inst;
>       dns_rbtnodechain_t chain;
> -     dns_rbt_t *rbt;
> +     dns_rbt_t *rbt = NULL;
>       isc_result_t result = ISC_R_SUCCESS;
>       const char *db_name;
>  
> @@ -530,7 +530,10 @@ destroy_ldap_instance(ldap_instance_t **ldap_instp)
>        *
>        * NOTE: This should be probably done in zone_register.c
>        */
> -     rbt = zr_get_rbt(ldap_inst->zone_register);
> +     if (ldap_inst->zone_register != NULL)
> +             rbt = zr_get_rbt(ldap_inst->zone_register);
> +     if (rbt == NULL)
> +             result = ISC_R_NOTFOUND;
>  
>       /* Potentially ISC_R_NOSPACE can occur. Destroy codepath has no way to
>        * return errors, so kill BIND.
> -- 
> 1.7.11.4
> 


-- 
Adam Tkac, Red Hat, Inc.

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to