summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2021-12-14 15:38:12 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2021-12-14 20:00:56 +0900
commit2ff457720bd3bc59985e807b748f6305bdf27826 (patch)
tree8584ba35de45f5c49299ea4d12b318cd8da14a15 /src
parent76fc1577023b524302ea44e5bfffbd0074a2271d (diff)
downloadsystemd-2ff457720bd3bc59985e807b748f6305bdf27826.tar.gz
home: fix heap-use-after-free
`bus_home_emit_remove()` may be called from manager_free() -> home_free(). In that case, manager->bus is already unref()ed. Fixes #21767.
Diffstat (limited to 'src')
-rw-r--r--src/home/homed-home-bus.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/home/homed-home-bus.c b/src/home/homed-home-bus.c
index 9e9f537d6c..61d4690780 100644
--- a/src/home/homed-home-bus.c
+++ b/src/home/homed-home-bus.c
@@ -940,6 +940,12 @@ int bus_home_emit_remove(Home *h) {
if (!h->announced)
return 0;
+ if (!h->manager)
+ return 0;
+
+ if (!h->manager->bus)
+ return 0;
+
r = bus_home_path(h, &path);
if (r < 0)
return r;