summaryrefslogtreecommitdiff
path: root/backport-resolv_conf-release-lock-on-allocation-failure-bug-30527.patch
diff options
context:
space:
mode:
Diffstat (limited to 'backport-resolv_conf-release-lock-on-allocation-failure-bug-30527.patch')
-rw-r--r--backport-resolv_conf-release-lock-on-allocation-failure-bug-30527.patch31
1 files changed, 31 insertions, 0 deletions
diff --git a/backport-resolv_conf-release-lock-on-allocation-failure-bug-30527.patch b/backport-resolv_conf-release-lock-on-allocation-failure-bug-30527.patch
new file mode 100644
index 0000000..f4fc1b3
--- /dev/null
+++ b/backport-resolv_conf-release-lock-on-allocation-failure-bug-30527.patch
@@ -0,0 +1,31 @@
+From abcf8db7fa46b73fd5b8193ce11f9312301b84c7 Mon Sep 17 00:00:00 2001
+From: Andreas Schwab <schwab@suse.de>
+Date: Wed, 7 Jun 2023 11:21:48 +0200
+Subject: [PATCH] resolv_conf: release lock on allocation failure (bug 30527)
+
+When the initial allocation of global fails, the local lock is left
+locked.
+
+Reported by Steffen Lammel of SAP HANA development.
+---
+ 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);
+ }
+--
+2.23.0