ea09da
From 97c5fed4ddbd627c046fbf946474270182bdda6e Mon Sep 17 00:00:00 2001
ea09da
From: =?UTF-8?q?Renaud=20M=C3=A9trich?= <rmetrich@redhat.com>
ea09da
Date: Sat, 23 Nov 2019 13:37:02 +0100
ea09da
Subject: [PATCH] unit: fix potential use of cgroup_path after free() when
ea09da
 freeing unit
ea09da
ea09da
Resolves: #1778083
ea09da
---
ea09da
 src/core/cgroup.c | 3 +--
ea09da
 src/core/unit.c   | 2 +-
ea09da
 2 files changed, 2 insertions(+), 3 deletions(-)
ea09da
ea09da
diff --git a/src/core/cgroup.c b/src/core/cgroup.c
ea09da
index 0779fa5552..f598fdd1e7 100644
ea09da
--- a/src/core/cgroup.c
ea09da
+++ b/src/core/cgroup.c
ea09da
@@ -873,8 +873,7 @@ void unit_destroy_cgroup_if_empty(Unit *u) {
ea09da
 
ea09da
         hashmap_remove(u->manager->cgroup_unit, u->cgroup_path);
ea09da
 
ea09da
-        free(u->cgroup_path);
ea09da
-        u->cgroup_path = NULL;
ea09da
+        u->cgroup_path = mfree(u->cgroup_path);
ea09da
         u->cgroup_realized = false;
ea09da
         u->cgroup_realized_mask = 0;
ea09da
 }
ea09da
diff --git a/src/core/unit.c b/src/core/unit.c
ea09da
index def36a0930..cabbf8056e 100644
ea09da
--- a/src/core/unit.c
ea09da
+++ b/src/core/unit.c
ea09da
@@ -514,7 +514,7 @@ void unit_free(Unit *u) {
ea09da
 
ea09da
         if (u->cgroup_path) {
ea09da
                 hashmap_remove(u->manager->cgroup_unit, u->cgroup_path);
ea09da
-                free(u->cgroup_path);
ea09da
+                u->cgroup_path = mfree(u->cgroup_path);
ea09da
         }
ea09da
 
ea09da
         set_remove(u->manager->failed_units, u);