dryang / rpms / systemd

Forked from rpms/systemd a year ago
Clone
5d2ee9
From 247d4f826ab189c4dfc4706aaa94782342655218 Mon Sep 17 00:00:00 2001
5d2ee9
From: Lennart Poettering <lennart@poettering.net>
5d2ee9
Date: Thu, 17 Jan 2019 21:06:30 +0100
5d2ee9
Subject: [PATCH] sd-bus: initialize mutex after we allocated the wqueue
5d2ee9
5d2ee9
That way the mutex doesn't have to be destroyed when we exit early due
5d2ee9
to OOM.
5d2ee9
5d2ee9
(cherry picked from commit 2fe9a10d7695c4c3a748969a0d1662c624e50e5e)
5d2ee9
Related: CVE-2020-1712
5d2ee9
---
5d2ee9
 src/libsystemd/sd-bus/sd-bus.c | 4 ++--
5d2ee9
 1 file changed, 2 insertions(+), 2 deletions(-)
5d2ee9
5d2ee9
diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
5d2ee9
index 01060d105c..e49d58137d 100644
5d2ee9
--- a/src/libsystemd/sd-bus/sd-bus.c
5d2ee9
+++ b/src/libsystemd/sd-bus/sd-bus.c
5d2ee9
@@ -248,12 +248,12 @@ _public_ int sd_bus_new(sd_bus **ret) {
5d2ee9
         b->original_pid = getpid_cached();
5d2ee9
         b->n_groups = (size_t) -1;
5d2ee9
 
5d2ee9
-        assert_se(pthread_mutex_init(&b->memfd_cache_mutex, NULL) == 0);
5d2ee9
-
5d2ee9
         /* We guarantee that wqueue always has space for at least one entry */
5d2ee9
         if (!GREEDY_REALLOC(b->wqueue, b->wqueue_allocated, 1))
5d2ee9
                 return -ENOMEM;
5d2ee9
 
5d2ee9
+        assert_se(pthread_mutex_init(&b->memfd_cache_mutex, NULL) == 0);
5d2ee9
+
5d2ee9
         *ret = TAKE_PTR(b);
5d2ee9
         return 0;
5d2ee9
 }