]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-boot: stub: check LoadOptions contains data (#5467)
authorMikko Ylinen <mikko.ylinen@linux.intel.com>
Mon, 27 Feb 2017 19:03:07 +0000 (21:03 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 27 Feb 2017 19:03:07 +0000 (20:03 +0100)
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>
src/boot/efi/stub.c

index 7c1ffb1bca1e839bb8b2698713ba752429154cc9..b7d5d3cdae369febeb9585bb08f7ef8afa5a89d4 100644 (file)
@@ -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;