mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 10:26:10 +01:00 
			
		
		
		
	efi_loader: check parameters of GetMemoryMap
Check the parameters of boottime service GetMemoryMap(). Return EFI_INVALID_PARAMETER where required by the UEFI spec. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
		
				
					committed by
					
						 Alexander Graf
						Alexander Graf
					
				
			
			
				
	
			
			
			
						parent
						
							4d5e071ee0
						
					
				
				
					commit
					8e835554b3
				
			| @@ -453,6 +453,9 @@ efi_status_t efi_get_memory_map(efi_uintn_t *memory_map_size, | ||||
| 	struct list_head *lhandle; | ||||
| 	efi_uintn_t provided_map_size = *memory_map_size; | ||||
|  | ||||
| 	if (!memory_map_size) | ||||
| 		return EFI_INVALID_PARAMETER; | ||||
|  | ||||
| 	list_for_each(lhandle, &efi_mem) | ||||
| 		map_entries++; | ||||
|  | ||||
| @@ -463,6 +466,9 @@ efi_status_t efi_get_memory_map(efi_uintn_t *memory_map_size, | ||||
| 	if (provided_map_size < map_size) | ||||
| 		return EFI_BUFFER_TOO_SMALL; | ||||
|  | ||||
| 	if (!memory_map) | ||||
| 		return EFI_INVALID_PARAMETER; | ||||
|  | ||||
| 	if (descriptor_size) | ||||
| 		*descriptor_size = sizeof(struct efi_mem_desc); | ||||
|  | ||||
| @@ -470,7 +476,6 @@ efi_status_t efi_get_memory_map(efi_uintn_t *memory_map_size, | ||||
| 		*descriptor_version = EFI_MEMORY_DESCRIPTOR_VERSION; | ||||
|  | ||||
| 	/* Copy list into array */ | ||||
| 	if (memory_map) { | ||||
| 	/* Return the list in ascending order */ | ||||
| 	memory_map = &memory_map[map_entries - 1]; | ||||
| 	list_for_each(lhandle, &efi_mem) { | ||||
| @@ -480,8 +485,8 @@ efi_status_t efi_get_memory_map(efi_uintn_t *memory_map_size, | ||||
| 		*memory_map = lmem->desc; | ||||
| 		memory_map--; | ||||
| 	} | ||||
| 	} | ||||
|  | ||||
| 	if (map_key) | ||||
| 		*map_key = 0; | ||||
|  | ||||
| 	return EFI_SUCCESS; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user