This patch will lift the upper limit of maximum path length.

Signed-off-by: AKASHI Takahiro <takahiro.aka...@linaro.org>
---
 lib/efi_loader/efi_device_path.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c
index 9f772fc924fb..8be7af2b1b7d 100644
--- a/lib/efi_loader/efi_device_path.c
+++ b/lib/efi_loader/efi_device_path.c
@@ -1021,8 +1021,7 @@ efi_status_t efi_dp_from_name(const char *dev, const char 
*devnr,
        struct blk_desc *desc = NULL;
        disk_partition_t fs_partition;
        int part = 0;
-       char filename[32] = { 0 }; /* dp->str is u16[32] long */
-       char *s;
+       char *file_path, *s;
 
        if (path && !file)
                return EFI_INVALID_PARAMETER;
@@ -1046,13 +1045,16 @@ efi_status_t efi_dp_from_name(const char *dev, const 
char *devnr,
        if (!path)
                return EFI_SUCCESS;
 
-       snprintf(filename, sizeof(filename), "%s", path);
+       file_path = strdup(path);
+       if (!file_path)
+               return EFI_OUT_OF_RESOURCES;
        /* DOS style file path: */
-       s = filename;
+       s = file_path;
        while ((s = strchr(s, '/')))
                *s++ = '\\';
        *file = efi_dp_from_file(((!is_net && device) ? desc : NULL),
-                                part, filename);
+                                part, file_path);
+       free(file_path);
 
        if (!file)
                return EFI_INVALID_PARAMETER;
-- 
2.21.0

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to