diff mbox series

resolv_conf: release lock on allocation failure (bug 30527)

Message ID mvmy1kv62mc.fsf@suse.de
State New
Headers show
Series resolv_conf: release lock on allocation failure (bug 30527) | expand

Commit Message

Andreas Schwab June 7, 2023, 9:30 a.m. UTC
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(-)

Comments

Florian Weimer June 7, 2023, 9:57 a.m. UTC | #1
* 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
diff mbox series

Patch

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);
     }