From d3a27ed402b329e303715620c896ab7ad613c58f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 25 Jun 2018 10:52:58 +0200 Subject: [PATCH] boot: do not assume the last character in cmdline is a newline Fixes #9401. --- src/boot/efi/boot.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c index fc0a64b23ab..48c9db7c154 100644 --- a/src/boot/efi/boot.c +++ b/src/boot/efi/boot.c @@ -1590,7 +1590,6 @@ static VOID config_entry_add_linux(Config *config, EFI_LOADED_IMAGE *loaded_imag if (os_name && os_id && (os_version || os_build)) { CHAR16 *conf; CHAR16 *path; - CHAR16 *cmdline; conf = PoolPrint(L"%s-%s", os_id, os_version ? : os_build); path = PoolPrint(L"\\EFI\\Linux\\%s", f->FileName); @@ -1599,13 +1598,16 @@ static VOID config_entry_add_linux(Config *config, EFI_LOADED_IMAGE *loaded_imag FreePool(content); content = NULL; /* read the embedded cmdline file */ - err = file_read(linux_dir, f->FileName, offs[1], szs[1] - 1, &content, NULL); + err = file_read(linux_dir, f->FileName, offs[1], szs[1], &content, NULL); if (!EFI_ERROR(err)) { - cmdline = stra_to_str(content); - entry->options = cmdline; - cmdline = NULL; + + /* chomp the newline */ + if (content[szs[1]-1] == '\n') + content[szs[1]-1] = '\0'; + + entry->options = stra_to_str(content); } - FreePool(cmdline); + FreePool(conf); FreePool(path); } -- 2.47.3