BdsLoadImage () is part of the BdsLib library API and is not documented
as modifying its DevicePath argument, but does so nonetheless. So take
a copy instead, and free it after use.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <[email protected]>
---
 Platform/ARM/Library/BdsLib/BdsFilePath.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/Platform/ARM/Library/BdsLib/BdsFilePath.c 
b/Platform/ARM/Library/BdsLib/BdsFilePath.c
index 67dafa4f3651..74fdbbee773d 100644
--- a/Platform/ARM/Library/BdsLib/BdsFilePath.c
+++ b/Platform/ARM/Library/BdsLib/BdsFilePath.c
@@ -1351,5 +1351,16 @@ BdsLoadImage (
   OUT    UINTN                 *FileSize
   )
 {
-  return BdsLoadImageAndUpdateDevicePath (&DevicePath, Type, Image, FileSize);
+  EFI_DEVICE_PATH       *Path;
+  EFI_STATUS            Status;
+
+  Path = DuplicateDevicePath (DevicePath);
+  if (Path == NULL) {
+    return EFI_OUT_OF_RESOURCES;
+  }
+
+  Status = BdsLoadImageAndUpdateDevicePath (&Path, Type, Image, FileSize);
+  FreePool (Path);
+
+  return Status;
 }
-- 
2.17.1

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to