diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 3b0f93b821..ffc58dde9c 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; diff --git a/src/home/homed-manager.c b/src/home/homed-manager.c index a73ea2dd3f..365ea4d234 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)) diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c index 79019aa3a1..86ff5bdfa2 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;