efi_loader: check memory type in AllocatePages()

The UEFI specification prescribes that AllocatePages() checks the memory
type.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
Heinrich Schuchardt 2019-04-23 00:30:53 +02:00
parent 6182495e10
commit f12bcc9149
2 changed files with 8 additions and 0 deletions

View file

@ -168,6 +168,10 @@ enum efi_mem_type {
* part of the processor.
*/
EFI_PAL_CODE,
/*
* Non-volatile memory.
*/
EFI_PERSISTENT_MEMORY_TYPE,
EFI_MAX_MEMORY_TYPE,
EFI_TABLE_END, /* For efi_build_mem_table() */

View file

@ -376,6 +376,10 @@ efi_status_t efi_allocate_pages(int type, int memory_type,
efi_status_t r = EFI_SUCCESS;
uint64_t addr;
/* Check import parameters */
if (memory_type >= EFI_PERSISTENT_MEMORY_TYPE &&
memory_type <= 0x6FFFFFFF)
return EFI_INVALID_PARAMETER;
if (!memory)
return EFI_INVALID_PARAMETER;