From d9864232498e32d29b7df8813980e124ce9deb04 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 28 May 2021 19:48:33 +0900 Subject: [PATCH] basic/unit-file: fix use-after-free This fixes a bug introduced by e8630e695232bdfcd16b55f3faafb4329c961104. Fixes CID#1453292. (cherry picked from commit 7f1238bd04000f3333e8e2fcb82c9c6e18ee3ffc) (cherry picked from commit 218117da2a8b4f1eccfc61353fdbe01219696378) (cherry picked from commit 5c86f9e0381dadc06650492cd68b28ed800d376d) --- src/shared/unit-file.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/shared/unit-file.c b/src/shared/unit-file.c index 0f030ae431..f51883b2c7 100644 --- a/src/shared/unit-file.c +++ b/src/shared/unit-file.c @@ -303,11 +303,11 @@ int unit_file_build_name_map( return log_oom(); if (paths) { - r = set_consume(paths, filename); + r = set_put(paths, filename); if (r < 0) return log_oom(); - /* We will still use filename below. This is safe because we know the set - * holds a reference. */ + if (r == 0) + _filename_free = filename; /* Make sure we free the filename. */ } else _filename_free = filename; /* Make sure we free the filename. */