Update Shell Protocol EfiShellGetMapFromDevicePath() to not
set the end if the device path if it is already an end of
entire device path.  This removes a write oprtation that can
cause failures if the Device Path Protocol is mapped to
read-only memory.  In general Device Path Protocols should not
be modified unless the API explicitly states that the device
path is modified.

Cc: Ard Biesheuvel <a...@kernel.org>
Cc: Ray Ni <ray...@intel.com>
Cc: Zhichao Gao <zhichao....@intel.com>
Signed-off-by: Michael D Kinney <michael.d.kin...@intel.com>
---
 ShellPkg/Application/Shell/ShellProtocol.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/ShellPkg/Application/Shell/ShellProtocol.c 
b/ShellPkg/Application/Shell/ShellProtocol.c
index 509eb60e40f4..e6d20ab16479 100644
--- a/ShellPkg/Application/Shell/ShellProtocol.c
+++ b/ShellPkg/Application/Shell/ShellProtocol.c
@@ -294,7 +294,13 @@ EfiShellGetMapFromDevicePath (
       *DevicePath = NextDevicePathNode (*DevicePath);
     }
 
-    SetDevicePathEndNode (*DevicePath);
+    //
+    // Do not call SetDevicePathEndNode() if the device path node is already 
the
+    // end of an entire device path.
+    //
+    if (!IsDevicePathEnd (*DevicePath)) {
+      SetDevicePathEndNode (*DevicePath);
+    }
   }
 
   /*
-- 
2.37.1.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#97189): https://edk2.groups.io/g/devel/message/97189
Mute This Topic: https://groups.io/mt/95562992/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to