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 <ronald.cron@arm.com>
Reviewed-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16655 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Ronald Cron 2015-01-23 16:09:07 +00:00 committed by oliviermartin
parent 2596e61a9b
commit ac83357a43
1 changed files with 2 additions and 11 deletions

View File

@ -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;
}