X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fsystemd.git;a=blobdiff_plain;f=src%2Ftmpfiles%2Ftmpfiles.c;fp=src%2Ftmpfiles%2Ftmpfiles.c;h=02eecf3e3af0e8339a189e7de211cc602769376e;hp=ef817fca4f7024157003c39b7e17d403ad72573d;hb=6c75f78e94c919d76e4f6e3d65abedba0e13e43f;hpb=7a555216df6e22c0d7b2b2d855b79e3e292f8c32 diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index ef817fca4f7..02eecf3e3af 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -2613,13 +2613,22 @@ static int parse_line(const char *fname, unsigned line, const char *buffer, bool case COPY_FILES: if (!i.argument) { - i.argument = strappend("/usr/share/factory/", i.path); + i.argument = path_join(arg_root, "/usr/share/factory/", i.path); if (!i.argument) return log_oom(); + } else if (!path_is_absolute(i.argument)) { *invalid_config = true; log_error("[%s:%u] Source path is not absolute.", fname, line); return -EBADMSG; + + } else if (arg_root) { + char *p; + + p = prefix_root(arg_root, i.argument); + if (!p) + return log_oom(); + free_and_replace(i.argument, p); } path_simplify(i.argument, false); @@ -2713,7 +2722,6 @@ static int parse_line(const char *fname, unsigned line, const char *buffer, bool p = path_join(arg_root, i.path); if (!p) return log_oom(); - free_and_replace(i.path, p); }