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:
		
							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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue