From: Spencer Michaels Date: Wed, 6 Nov 2019 03:55:39 +0000 (-0800) Subject: boot: Retain ".conf" suffix for loader config IDs. X-Git-Tag: v245-rc1~313^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6cd12ebcfe459466257ea63022a32515d756e719;p=thirdparty%2Fsystemd.git boot: Retain ".conf" suffix for loader config IDs. Change config_entry_add_from_file() so that it does not remove the `.conf` ending from the filename that it uses for entry->id. This is necessary because otherwise an EFISTUB binary and a loader config entry might end up with the same ID, as the loader config IDs previously didn't include the config filename's .conf extension (see boot.c:1435). Consider, for instance, an EFISTUB /EFI/Linux/linux.efi and a loader config /loader/entries/linux.efi.conf; both would have the ID linux.efi. In addition, update a comment that previously stated that IDs are non-unique (which is no longer the case, as of this commit). --- diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c index 39bad10eee7..f6989ddb9b6 100644 --- a/src/boot/efi/boot.c +++ b/src/boot/efi/boot.c @@ -32,7 +32,7 @@ enum loader_type { }; typedef struct { - CHAR16 *id; /* The identifier for this entry (note that this id is not necessarily unique though!) */ + CHAR16 *id; /* The unique identifier for this entry */ CHAR16 *title_show; CHAR16 *title; CHAR16 *version; @@ -1310,7 +1310,6 @@ static VOID config_entry_add_from_file( CHAR8 *line; UINTN pos = 0; CHAR8 *key, *value; - UINTN len; EFI_STATUS err; EFI_FILE_HANDLE handle; _cleanup_freepool_ CHAR16 *initrd = NULL; @@ -1431,10 +1430,6 @@ static VOID config_entry_add_from_file( entry->device = device; entry->id = StrDuplicate(file); - len = StrLen(entry->id); - /* remove ".conf" */ - if (len > 5) - entry->id[len - 5] = '\0'; StrLwr(entry->id); config_add_entry(config, entry);