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.
898e9edc46 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.
This commit is contained in:
+2
-2
@@ -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(
|
||||
|
||||
@@ -542,7 +542,6 @@ static inline uint64_t ALIGN_OFFSET_U64(uint64_t l, uint64_t ali) {
|
||||
#define DECLARE_NOALLOC_SECTION(name, text) \
|
||||
asm(".pushsection " name ",\"S\"\n\t" \
|
||||
".ascii " STRINGIFY(text) "\n\t" \
|
||||
".zero 1\n\t" \
|
||||
".popsection\n")
|
||||
|
||||
#ifdef SBAT_DISTRO
|
||||
|
||||
Reference in New Issue
Block a user