dryang / rpms / systemd

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