summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2015-04-30 12:33:35 +0200
committerSven Eden <yamakuzure@gmx.net>2017-03-14 08:20:15 +0100
commit3d6374dfb8b85537dfa4284a9f0dd87497c63cf7 (patch)
tree89dbb846fc878cc85dd5ad795f3f7bac0e3f1c44 /src
parentf4adece1e6a395080c0775f830a08e760ba8d625 (diff)
core: catch some special cases in cg_slice_to_path()
Diffstat (limited to 'src')
-rw-r--r--src/shared/cgroup-util.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c
index 2654efa1c..ce8ebb2ca 100644
--- a/src/shared/cgroup-util.c
+++ b/src/shared/cgroup-util.c
@@ -1641,6 +1641,16 @@ int cg_slice_to_path(const char *unit, char **ret) {
assert(unit);
assert(ret);
+ if (streq(unit, "-.slice")) {
+ char *x;
+
+ x = strdup("");
+ if (!x)
+ return -ENOMEM;
+ *ret = x;
+ return 0;
+ }
+
if (!unit_name_is_valid(unit, TEMPLATE_INVALID))
return -EINVAL;
@@ -1656,8 +1666,10 @@ int cg_slice_to_path(const char *unit, char **ret) {
_cleanup_free_ char *escaped = NULL;
char n[dash - p + sizeof(".slice")];
- strcpy(stpncpy(n, p, dash - p), ".slice");
+ if (isempty(dash + 1))
+ return -EINVAL;
+ strcpy(stpncpy(n, p, dash - p), ".slice");
if (!unit_name_is_valid(n, TEMPLATE_INVALID))
return -EINVAL;