mirror of
https://github.com/morgan9e/systemd
synced 2026-04-15 17:06:39 +09:00
systemctl: fail in the case that no unit files were found
Previously systemctl died with message -bash-4.2# systemctl --root /rawhi list-unit-files (src/systemctl/systemctl.c:868) Out of memory. in the case that no unit files were found in the --root or the directory did not exist. So lets return ENOENT in the case that --root does not exist and empty list in the case that there are no unit files.
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user