From 755b35b1aa6eda16a2cf02be3e4aa44d08fc17a3 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 9 Nov 2020 14:00:14 +0900 Subject: [PATCH 1/3] home: fix copy-and-paste mistake Fixes #17542. --- src/home/homed-manager.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/home/homed-manager.c b/src/home/homed-manager.c index 0490032416..305cff8c81 100644 --- a/src/home/homed-manager.c +++ b/src/home/homed-manager.c @@ -159,7 +159,7 @@ static int on_home_inotify(sd_event_source *s, const struct inotify_event *event (void) bus_manager_emit_auto_login_changed(m); } - if ((event->mask & (IN_DELETE|IN_MOVED_FROM|IN_DELETE)) != 0) { + if ((event->mask & (IN_DELETE | IN_CLOSE_WRITE | IN_MOVED_FROM)) != 0) { Home *h; if (FLAGS_SET(event->mask, IN_DELETE)) From 291bb0b01cae22c3c14882fd5a0ad557c92d9298 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 9 Nov 2020 14:33:16 +0900 Subject: [PATCH 2/3] sd-bus: fix possible division by 0 Fixes #17541. --- src/libsystemd/sd-bus/bus-message.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c index f966dda229..b8cd5e6417 100644 --- a/src/libsystemd/sd-bus/bus-message.c +++ b/src/libsystemd/sd-bus/bus-message.c @@ -3189,6 +3189,8 @@ static int container_next_item(sd_bus_message *m, struct bus_container *c, size_ int sz; sz = bus_gvariant_get_size(c->signature); + if (sz == 0) + return -EBADMSG; if (sz < 0) { int alignment; From 601844b71dd2414c8c015192c8b11cbf89cfc2cb Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 9 Nov 2020 14:40:02 +0900 Subject: [PATCH 3/3] core: reduce scope of variants Fixes #17543. --- src/core/load-fragment.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 0ab64e1708..5f8b0fedf0 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -5646,9 +5646,7 @@ void unit_dump_config_items(FILE *f) { NULSTR_FOREACH(i, load_fragment_gperf_nulstr) { const char *rvalue = "OTHER", *lvalue; const ConfigPerfItem *p; - size_t prefix_len; const char *dot; - unsigned j; assert_se(p = load_fragment_gperf_lookup(i, strlen(i))); @@ -5657,7 +5655,7 @@ void unit_dump_config_items(FILE *f) { p->ltype == DISABLED_LEGACY) continue; - for (j = 0; j < ELEMENTSOF(table); j++) + for (size_t j = 0; j < ELEMENTSOF(table); j++) if (p->parse == table[j].callback) { rvalue = table[j].rvalue; break; @@ -5665,15 +5663,17 @@ void unit_dump_config_items(FILE *f) { dot = strchr(i, '.'); lvalue = dot ? dot + 1 : i; - prefix_len = dot-i; - if (dot) + if (dot) { + size_t prefix_len = dot - i; + if (!prev || !strneq(prev, i, prefix_len+1)) { if (prev) fputc('\n', f); fprintf(f, "[%.*s]\n", (int) prefix_len, i); } + } fprintf(f, "%s=%s\n", lvalue, rvalue); prev = i;