summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/unit.c10
-rw-r--r--src/shared/install.c8
-rw-r--r--src/shared/varlink.c9
3 files changed, 12 insertions, 15 deletions
diff --git a/src/core/unit.c b/src/core/unit.c
index 2d096cbaef..8d652354eb 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -4935,14 +4935,14 @@ int unit_require_mounts_for(Unit *u, const char *path, UnitDependencyMask mask)
if (hashmap_contains(u->requires_mounts_for, path)) /* Exit quickly if the path is already covered. */
return 0;
- _cleanup_free_ char *p = strdup(path);
- if (!p)
- return -ENOMEM;
-
/* Use the canonical form of the path as the stored key. We call path_is_normalized()
* only after simplification, since path_is_normalized() rejects paths with '.'.
* path_is_normalized() also verifies that the path fits in PATH_MAX. */
- path = path_simplify(p);
+ _cleanup_free_ char *p = NULL;
+ r = path_simplify_alloc(path, &p);
+ if (r < 0)
+ return r;
+ path = p;
if (!path_is_normalized(path))
return -EPERM;
diff --git a/src/shared/install.c b/src/shared/install.c
index ba3be0e99d..8b0705eb9e 100644
--- a/src/shared/install.c
+++ b/src/shared/install.c
@@ -581,11 +581,9 @@ static int mark_symlink_for_removal(
if (r < 0)
return r;
- n = strdup(p);
- if (!n)
- return -ENOMEM;
-
- path_simplify(n);
+ r = path_simplify_alloc(p, &n);
+ if (r < 0)
+ return r;
r = set_consume(*remove_symlinks_to, n);
if (r == -EEXIST)
diff --git a/src/shared/varlink.c b/src/shared/varlink.c
index 1d6e7fb64e..121de882bb 100644
--- a/src/shared/varlink.c
+++ b/src/shared/varlink.c
@@ -501,6 +501,7 @@ int varlink_connect_url(Varlink **ret, const char *url) {
_cleanup_free_ char *c = NULL;
const char *p;
bool exec;
+ int r;
assert_return(ret, -EINVAL);
assert_return(url, -EINVAL);
@@ -533,11 +534,9 @@ int varlink_connect_url(Varlink **ret, const char *url) {
if (!path_is_absolute(p))
return log_debug_errno(SYNTHETIC_ERRNO(EINVAL), "Specified path not absolute, refusing.");
- c = strdup(p);
- if (!c)
- return log_oom_debug();
-
- path_simplify(c);
+ r = path_simplify_alloc(p, &c);
+ if (r < 0)
+ return r;
if (!path_is_normalized(c))
return log_debug_errno(SYNTHETIC_ERRNO(EINVAL), "Specified path is not normalized, refusing.");