efi_loader: unaligned access in efi_file_from_path()

The device path structure is packed. So no assumption on the alignment is
possible. Copy the file name in efi_file_from_path() to assure there is no
unaligned access.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
diff --git a/lib/efi_loader/efi_file.c b/lib/efi_loader/efi_file.c
index 36ca719..f4ca569 100644
--- a/lib/efi_loader/efi_file.c
+++ b/lib/efi_loader/efi_file.c
@@ -755,6 +755,7 @@
 		struct efi_device_path_file_path *fdp =
 			container_of(fp, struct efi_device_path_file_path, dp);
 		struct efi_file_handle *f2;
+		u16 *filename;
 
 		if (!EFI_DP_TYPE(fp, MEDIA_DEVICE, FILE_PATH)) {
 			printf("bad file path!\n");
@@ -762,8 +763,12 @@
 			return NULL;
 		}
 
-		EFI_CALL(ret = f->open(f, &f2, fdp->str,
+		filename = u16_strdup(fdp->str);
+		if (!filename)
+			return NULL;
+		EFI_CALL(ret = f->open(f, &f2, filename,
 				       EFI_FILE_MODE_READ, 0));
+		free(filename);
 		if (ret != EFI_SUCCESS)
 			return NULL;