summaryrefslogtreecommitdiff
path: root/src/boot
diff options
context:
space:
mode:
authorMikko Ylinen <mikko.ylinen@linux.intel.com>2017-02-27 21:03:07 +0200
committerLennart Poettering <lennart@poettering.net>2017-02-27 20:03:07 +0100
commit293b167349cd4e9e1980cf9095bbfe0e65bf9a9f (patch)
tree7ee3462a862dc4edaa91225b9ab5e5c562fcc99d /src/boot
parent3c3fff44b2c46818bc240e3237925ad927b2831e (diff)
sd-boot: stub: check LoadOptions contains data (#5467)
With some UEFI shells LoadOptionsSize is reported being > 0 but the corresponding LoadOptions does not contain any data (the first element has value 0). When that happens, the stub feature that allows .cmdline to be replaced by what's in LoadOptions ends up copying nothing/random data to the kernel cmdline resulting in different kinds of boot problems. To fix this, add a check to see if LoadOptions contains data before replacing the .cmdline. Signed-off-by: Mikko Ylinen <mikko.ylinen@linux.intel.com>
Diffstat (limited to 'src/boot')
-rw-r--r--src/boot/efi/stub.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/boot/efi/stub.c b/src/boot/efi/stub.c
index 7c1ffb1bca..b7d5d3cdae 100644
--- a/src/boot/efi/stub.c
+++ b/src/boot/efi/stub.c
@@ -87,7 +87,7 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) {
cmdline_len = szs[0];
/* if we are not in secure boot mode, accept a custom command line and replace the built-in one */
- if (!secure && loaded_image->LoadOptionsSize > 0) {
+ if (!secure && loaded_image->LoadOptionsSize > 0 && *(CHAR16 *)loaded_image->LoadOptions != 0) {
CHAR16 *options;
CHAR8 *line;
UINTN i;