diff options
author | Michael D Kinney <michael.d.kinney@intel.com> | 2022-12-09 07:53:21 -0800 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2022-12-13 21:12:47 +0000 |
commit | 592bf33a29360e8a447ed8b75daefe94c0888642 (patch) | |
tree | f50e9cba983a31355f6351e35cc6b4d35ff5b070 /ShellPkg/Application | |
parent | 1fd8d08970a9ee7d350c7dd42bffb0cb96426041 (diff) | |
download | edk2-592bf33a29360e8a447ed8b75daefe94c0888642.zip edk2-592bf33a29360e8a447ed8b75daefe94c0888642.tar.gz edk2-592bf33a29360e8a447ed8b75daefe94c0888642.tar.bz2 |
ShellPkg/Shell: Do not set end device path if already end
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 operation 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 <ardb@kernel.org>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Zhichao Gao <zhichao.gao@intel.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>
Diffstat (limited to 'ShellPkg/Application')
-rw-r--r-- | ShellPkg/Application/Shell/ShellProtocol.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/ShellPkg/Application/Shell/ShellProtocol.c b/ShellPkg/Application/Shell/ShellProtocol.c index 509eb60..e6d20ab 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);
+ }
}
/*
|