]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
find-esp: use path_prefix_root_cwd() 27199/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 10 Apr 2023 19:57:34 +0000 (04:57 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 10 Apr 2023 21:27:11 +0000 (06:27 +0900)
Unlikely, but even if find_esp() or friends called with unnormalized or
relative 'root', let's make the result path normalized and absolute.

Note, before 63105f33edad423691e2d53bf7071f99c83799ba, these functions
returned an absolute and normalized path. But the commit made the result
path simply concatenated with root.

Follow-up for 63105f33edad423691e2d53bf7071f99c83799ba.

src/shared/find-esp.c

index 0d45249d6327ce2369b5b77c00235663420fbd97..6a0002a2bdfa07f8b990f43b70db915cc02cb6f3 100644 (file)
@@ -540,11 +540,9 @@ int find_esp_and_warn(
                 return r;
 
         if (ret_path) {
-                char *q = path_join(empty_to_root(root), p);
-                if (!q)
-                        return -ENOMEM;
-
-                *ret_path = TAKE_PTR(q);
+                r = path_prefix_root_cwd(p, root, ret_path);
+                if (r < 0)
+                        return r;
         }
         if (ret_part)
                 *ret_part = part;
@@ -861,11 +859,9 @@ int find_xbootldr_and_warn(
                 return r;
 
         if (ret_path) {
-                char *q = path_join(empty_to_root(root), p);
-                if (!q)
-                        return -ENOMEM;
-
-                *ret_path = TAKE_PTR(q);
+                r = path_prefix_root_cwd(p, root, ret_path);
+                if (r < 0)
+                        return r;
         }
         if (ret_uuid)
                 *ret_uuid = uuid;