summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/cgroup-util.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c
index 1306cc197a..b5e4094f4e 100644
--- a/src/shared/cgroup-util.c
+++ b/src/shared/cgroup-util.c
@@ -1663,11 +1663,17 @@ int cg_slice_to_path(const char *unit, char **ret) {
return -ENOMEM;
dash = strchr(p, '-');
+
+ /* Don't allow initial dashes */
+ if (dash == p)
+ return -EINVAL;
+
while (dash) {
_cleanup_free_ char *escaped = NULL;
char n[dash - p + sizeof(".slice")];
- if (isempty(dash + 1))
+ /* Don't allow trailing or double dashes */
+ if (dash[1] == 0 || dash[1] == '-')
return -EINVAL;
strcpy(stpncpy(n, p, dash - p), ".slice");