diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2024-10-30 15:30:53 +0100 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2024-10-31 14:58:12 +0100 |
commit | d97b8d9d7b615066aa99aa5f08c7ca4876d9502d (patch) | |
tree | 0db019dcef3688bf3ea99245365d85185dacf594 /src/boot | |
parent | test-sbat: separate the two sbat sections (diff) | |
download | systemd-d97b8d9d7b615066aa99aa5f08c7ca4876d9502d.tar.xz systemd-d97b8d9d7b615066aa99aa5f08c7ca4876d9502d.zip |
boot: stop appending NUL to .sdmagic and .sbat sections
Those text sections had a trailing NUL byte. It's debatable whether this is a
good idea or not. Correctly written consumers will look at the section size so
they wouldn't need this. Shim doesn't use a trailing NUL, so let's follow suit.
Fixes https://github.com/systemd/systemd/issues/33731.
898e9edc469f87fdb6018128bac29eef0a5fe698 reworked this code, but didn't actually
change the logic. We have always been appending the trailing zero by using a
NUL-terminated string as the section contents. (I checked this with v253.18
from before the elf2efi rework.)
.sdmagic contains a string like "#### LoaderInfo: systemd-boot 257~devel ####",
which changes with each version, so previous versions would compare unequal
anyway, so we don't need to worry about backwards compatibility.
Diffstat (limited to 'src/boot')
-rw-r--r-- | src/boot/efi/boot.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c index a8c7b6881f..87b0232860 100644 --- a/src/boot/efi/boot.c +++ b/src/boot/efi/boot.c @@ -1926,14 +1926,14 @@ static bool is_sd_boot(EFI_FILE *root_dir, const char16_t *loader_path) { /* profile= */ UINT_MAX, /* validate_base= */ 0, &vector); - if (vector.memory_size != sizeof(SD_MAGIC)) + if (vector.memory_size != STRLEN(SD_MAGIC)) return false; err = file_handle_read(handle, vector.file_offset, vector.file_size, &content, &read); if (err != EFI_SUCCESS || vector.file_size != read) return false; - return memcmp(content, SD_MAGIC, sizeof(SD_MAGIC)) == 0; + return memcmp(content, SD_MAGIC, STRLEN(SD_MAGIC)) == 0; } static BootEntry* config_add_entry_loader_auto( |