efi_loader: memory leak in efi_set_bootdev()
efi_set_bootdev() may be called repeatedly. Free the memory allocated for device paths in previous calls. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
		
							parent
							
								
									8887acc685
								
							
						
					
					
						commit
						79276eb243
					
				|  | @ -603,6 +603,13 @@ void efi_set_bootdev(const char *dev, const char *devnr, const char *path) | ||||||
| 	char filename[32] = { 0 }; /* dp->str is u16[32] long */ | 	char filename[32] = { 0 }; /* dp->str is u16[32] long */ | ||||||
| 	char *s; | 	char *s; | ||||||
| 
 | 
 | ||||||
|  | 	/* efi_set_bootdev is typically called repeatedly, recover memory */ | ||||||
|  | 	efi_free_pool(bootefi_device_path); | ||||||
|  | 	efi_free_pool(bootefi_image_path); | ||||||
|  | 	/* If blk_get_device_part_str fails, avoid duplicate free. */ | ||||||
|  | 	bootefi_device_path = NULL; | ||||||
|  | 	bootefi_image_path = NULL; | ||||||
|  | 
 | ||||||
| 	if (strcmp(dev, "Net")) { | 	if (strcmp(dev, "Net")) { | ||||||
| 		struct blk_desc *desc; | 		struct blk_desc *desc; | ||||||
| 		disk_partition_t fs_partition; | 		disk_partition_t fs_partition; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue