From: Daan De Meyer Date: Mon, 3 Oct 2022 08:09:24 +0000 (+0200) Subject: repart: Use chase_symlinks() instead of path_join() X-Git-Tag: v252-rc1~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=898db9f3cf69f874ab0955606c8f95a2ce06f0ed;p=thirdparty%2Fsystemd.git repart: Use chase_symlinks() instead of path_join() Let's properly resolve symlinks and check if the source actually exists. --- diff --git a/src/partition/repart.c b/src/partition/repart.c index cbda6e408bd..29c9b579397 100644 --- a/src/partition/repart.c +++ b/src/partition/repart.c @@ -3361,9 +3361,9 @@ static int partition_populate_directory(Partition *p, char **ret_root, char **re if (strv_length(p->copy_files) == 2 && strv_length(p->make_directories) == 0 && streq(p->copy_files[1], "/")) { _cleanup_free_ char *s = NULL; - s = path_join(arg_root, p->copy_files[0]); - if (!s) - return log_oom(); + r = chase_symlinks(p->copy_files[0], arg_root, CHASE_PREFIX_ROOT|CHASE_WARN, &s, NULL); + if (r < 0) + return log_error_errno(r, "Failed to resolve source '%s%s': %m", strempty(arg_root), p->copy_files[0]); *ret_root = TAKE_PTR(s); *ret_tmp_root = NULL;