diff options
| author | Tamas K Lengyel <tamas@tklengyel.com> | 2017-12-31 11:03:26 -0700 |
|---|---|---|
| committer | Peter Jones <pjones@redhat.com> | 2018-03-12 16:59:31 -0400 |
| commit | 38b16b200c10cc13c755481884484435dd45d5d3 (patch) | |
| tree | 8bbc7baeeb87b11e8a08f87ba4d4d466597bfdad | |
| parent | f29240734b7dd939a7d91d6d82596ec458c1abcb (diff) | |
| download | efi-boot-shim-38b16b200c10cc13c755481884484435dd45d5d3.tar.gz efi-boot-shim-38b16b200c10cc13c755481884484435dd45d5d3.zip | |
shim: Don't overwrite EFI_LOADED_IMAGE's LoadOptions when not needed
When the firmware is using EFI_LOAD_OPTION to specify options for the secondary
loader, the shim will properly detect that and return in set_second_stage. Later
howerer in handle_image EFI_LOADED_IMAGE is being overwritten with load_option
irrespective of the fact that load_option was never set. This effectively
prevents the EFI_LOAD_OPTION from reaching the secondary loader.
Only overwrite EFI_LOADED_IMAGE's LoadOptions when load_option is not NULL
solves the problem.
Signed-off-by: Tamas K Lengyel <lengyelt@ainfosec.com>
| -rw-r--r-- | shim.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -1441,8 +1441,10 @@ static EFI_STATUS handle_image (void *data, unsigned int datasize, li->ImageSize = context.ImageSize; /* Pass the load options to the second stage loader */ - li->LoadOptions = load_options; - li->LoadOptionsSize = load_options_size; + if ( load_options ) { + li->LoadOptions = load_options; + li->LoadOptionsSize = load_options_size; + } if (!found_entry_point) { perror(L"Entry point is not within sections\n"); |
