diff options
Diffstat (limited to 'src/basic/unit-name.c')
-rw-r--r-- | src/basic/unit-name.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/basic/unit-name.c b/src/basic/unit-name.c index 1b81fe268f..614eb8649b 100644 --- a/src/basic/unit-name.c +++ b/src/basic/unit-name.c @@ -369,12 +369,13 @@ int unit_name_unescape(const char *f, char **ret) { } int unit_name_path_escape(const char *f, char **ret) { - char *p, *s; + _cleanup_free_ char *p = NULL; + char *s; assert(f); assert(ret); - p = strdupa(f); + p = strdup(f); if (!p) return -ENOMEM; @@ -386,13 +387,9 @@ int unit_name_path_escape(const char *f, char **ret) { if (!path_is_normalized(p)) return -EINVAL; - /* Truncate trailing slashes */ + /* Truncate trailing slashes and skip leading slashes */ delete_trailing_chars(p, "/"); - - /* Truncate leading slashes */ - p = skip_leading_chars(p, "/"); - - s = unit_name_escape(p); + s = unit_name_escape(skip_leading_chars(p, "/")); } if (!s) return -ENOMEM; |