Skip to content

Commit

Permalink
src/bootchooser: support the changed output of efibootmgr 18
Browse files Browse the repository at this point in the history
Since efibootmgr 18, the default output of `efibootmgr` is now more
verbose [1], which breaks the assumptions made by RAUC in regards to
parsing the output. This issue is also affecting others [2].

Fix the parsing logic by unconditionally removing anything after a tab
in the detected name part of the boot entry, so that the unused data
part is discarded.
Emit a debug message for each found boot entry, as this helps in
detecting issues in the future.

[1] rhboot/efibootmgr@8ec3e9d
[2] rhboot/efibootmgr#169

Signed-off-by: David Runge <[email protected]>
  • Loading branch information
dvzrv committed Aug 1, 2023
1 parent cbedea8 commit 7f9f3f5
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions src/bootchooser.c
Original file line number Diff line number Diff line change
Expand Up @@ -1159,11 +1159,20 @@ static gboolean efi_bootorder_get(GList **bootorder_entries, GList **all_entries
}

while (g_match_info_matches(match)) {
gchar *tab_point = NULL;
efi_bootentry *entry = g_new0(efi_bootentry, 1);
entry->num = g_match_info_fetch(match, 1);
entry->name = g_match_info_fetch(match, 2);

/* Remove anything after a tab, as it is most likely path
* information which we don't need. */
tab_point = strchr(entry->name, '\t');
if (tab_point)
*tab_point = '\0';

entries = g_list_append(entries, entry);
g_match_info_next(match, NULL);
g_debug("Detected EFI boot entry %s: %s", entry->num, entry->name);
}

g_clear_pointer(&regex, g_regex_unref);
Expand Down

0 comments on commit 7f9f3f5

Please sign in to comment.