[PATCH] resolv_conf: release lock on allocation failure (bug 30527)

Florian Weimer fweimer@redhat.com
Wed Jun 7 09:57:57 GMT 2023


* Andreas Schwab via Libc-alpha:

> When the initial allocation of global fails, the local lock is left
> locked.
> ---
>  resolv/resolv_conf.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/resolv/resolv_conf.c b/resolv/resolv_conf.c
> index bd5890773b..8bc9edc634 100644
> --- a/resolv/resolv_conf.c
> +++ b/resolv/resolv_conf.c
> @@ -93,7 +93,10 @@ get_locked_global (void)
>      {
>        global_copy = calloc (1, sizeof (*global));
>        if (global_copy == NULL)
> -        return NULL;
> +	{
> +	  __libc_lock_unlock (lock);
> +	  return NULL;
> +	}
>        atomic_store_relaxed (&global, global_copy);
>        resolv_conf_array_init (&global_copy->array);
>      }
> -- 

Okay.

Thanks,
Florian



More information about the Libc-alpha mailing list