diff options
-rw-r--r-- | src/shared/install.c | 6 | ||||
-rw-r--r-- | src/systemctl/systemctl.c | 4 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/shared/install.c b/src/shared/install.c index 0fe1371129..03c7a9da2e 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -2044,6 +2044,12 @@ int unit_file_get_list( if (root_dir && scope != UNIT_FILE_SYSTEM) return -EINVAL; + if (root_dir) { + r = access(root_dir, F_OK); + if (r < 0) + return -errno; + } + r = lookup_paths_init_from_scope(&paths, scope, root_dir); if (r < 0) return r; diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 36db652316..072f615ad5 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1350,6 +1350,10 @@ static int list_unit_files(sd_bus *bus, char **args) { } n_units = hashmap_size(h); + + if (n_units == 0) + return 0; + units = new(UnitFileList, n_units); if (!units) { unit_file_list_free(h); |