On 01/15/2016 10:29 AM, Haojian Zhuang wrote:
BdsFileSystemSupport() checks Handle first before validating device
path of file. There's the potential issue at here.

BdsConnectAndUpdateDevicePath() will skip to locate handle if it's
file or memory mapped. Then BdsFileSystemSupport() tries to use
the invalid Handle when it's not file path in file system.

Now check the device path first. If it's not file path in file system,
return directly.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Haojian Zhuang <haojian.zhu...@linaro.org>
---
  ArmPkg/Library/BdsLib/BdsFilePath.c | 8 +++++---
  1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/ArmPkg/Library/BdsLib/BdsFilePath.c 
b/ArmPkg/Library/BdsLib/BdsFilePath.c
index aefeaed..42c6dc4 100644
--- a/ArmPkg/Library/BdsLib/BdsFilePath.c
+++ b/ArmPkg/Library/BdsLib/BdsFilePath.c
@@ -460,9 +460,11 @@ BdsFileSystemSupport (
    EFI_STATUS  Status;
    EFI_SIMPLE_FILE_SYSTEM_PROTOCOL     *FsProtocol;

-  Status = gBS->HandleProtocol (Handle, &gEfiSimpleFileSystemProtocolGuid, (VOID 
**)&FsProtocol);
-
-  return (!EFI_ERROR (Status) && IS_DEVICE_PATH_NODE (RemainingDevicePath, 
MEDIA_DEVICE_PATH, MEDIA_FILEPATH_DP));
+  if (IS_DEVICE_PATH_NODE (RemainingDevicePath, MEDIA_DEVICE_PATH, 
MEDIA_FILEPATH_DP)) {
+    Status = gBS->HandleProtocol (Handle, &gEfiSimpleFileSystemProtocolGuid, (VOID 
**)&FsProtocol);
+    return (!EFI_ERROR (Status));
+  }
+  return FALSE;
  }

  EFI_STATUS


Hi Leif & Ard,

How about this patch series? Any comments?

Best Regards
Haojian
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to