From ac83357a4311e008b229a8db43d2f1726cfe326d Mon Sep 17 00:00:00 2001 From: Ronald Cron Date: Fri, 23 Jan 2015 16:09:07 +0000 Subject: [PATCH] ArmPkg/NorFlashDxe : Fix the check of flash addresses Fix the check to prevent any reading past the end of the nor flash. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ronald Cron Reviewed-by: Olivier Martin git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16655 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.c b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.c index 2f828ec869..3abbe5cb32 100644 --- a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.c +++ b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.c @@ -805,8 +805,7 @@ NorFlashRead ( OUT VOID *Buffer ) { - UINT32 NumBlocks; - UINTN StartAddress; + UINTN StartAddress; // The buffer must be valid if (Buffer == NULL) { @@ -818,15 +817,7 @@ NorFlashRead ( return EFI_SUCCESS; } - // All blocks must be within the device - NumBlocks = ((UINT32)BufferSizeInBytes) / Instance->Media.BlockSize ; - - if ((Lba + NumBlocks) > (Instance->Media.LastBlock + 1)) { - DEBUG ((EFI_D_ERROR, "NorFlashRead: ERROR - Read will exceed last block\n")); - return EFI_INVALID_PARAMETER; - } - - if (Offset + BufferSizeInBytes >= Instance->Size) { + if (((Lba * Instance->Media.BlockSize) + Offset + BufferSizeInBytes) > Instance->Size) { DEBUG ((EFI_D_ERROR, "NorFlashRead: ERROR - Read will exceed device size.\n")); return EFI_INVALID_PARAMETER; } -- 2.39.2