X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fshared%2Fcgroup-util.c;h=ce8ebb2ca425bc8b3506c085bf0154b3044ca372;hp=2654efa1ceb279ac24c0beb124df534a6fdee4ac;hb=3d6374dfb8b85537dfa4284a9f0dd87497c63cf7;hpb=f4adece1e6a395080c0775f830a08e760ba8d625 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;