diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-12-14 15:38:12 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-12-14 20:00:56 +0900 |
commit | 2ff457720bd3bc59985e807b748f6305bdf27826 (patch) | |
tree | 8584ba35de45f5c49299ea4d12b318cd8da14a15 /src | |
parent | 76fc1577023b524302ea44e5bfffbd0074a2271d (diff) | |
download | systemd-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.c | 6 |
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; |