summaryrefslogtreecommitdiff
path: root/src/shared/install.c
diff options
context:
space:
mode:
authorLukas Nykryn <lnykryn@redhat.com>2014-08-19 20:53:29 +0200
committerLukas Nykryn <lnykryn@redhat.com>2014-08-20 10:45:18 +0200
commitfdbdf6ec29bda40763d7d3e7bb2a63e2f5d60c4c (patch)
tree545c0ead1e513664b15c4b897aa7db6959da4f06 /src/shared/install.c
parent5d0ae62c665262c4c55536457e84e278c252cc0b (diff)
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.
Diffstat (limited to 'src/shared/install.c')
-rw-r--r--src/shared/install.c6
1 files changed, 6 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;