[PATCH v13 1/9] eficonfig: menu-driven addition of UEFI boot option

Masahisa Kojima masahisa.kojima at linaro.org
Thu Aug 25 05:16:47 CEST 2022


On Wed, 24 Aug 2022 at 20:15, Ilias Apalodimas
<ilias.apalodimas at linaro.org> wrote:
>
> Hi Kojima-san,
>
> [...]
>
> > + * eficonfig_destroy() - destroy efimenu
> > + *
> > + * @efi_menu:        pointer to the efimenu structure
> > + * @flag:    flag to free the allocated data
> > + */
> > +static void eficonfig_destroy(struct efimenu *efi_menu, bool flag)
> > +{
> > +     struct list_head *pos, *n;
> > +     struct eficonfig_entry *entry;
> > +
> > +     list_for_each_safe(pos, n, &efi_menu->list) {
> > +             entry = list_entry(pos, struct eficonfig_entry, list);
> > +             free(entry->title);
> > +             if (flag)
> > +                     free(entry->data);
>
> I don't we need this flag.  entry->data is either set to a valid pointer or
> NULL on append_entry().

There is a case that entry->data is still used after the menu is destroyed.

The following case, file_info is still used after eficonfig_destroy().
https://git.linaro.org/people/masahisa.kojima/u-boot.git/tree/cmd/eficonfig.c?h=kojima/eficonfig_upstream_v13#n953

Also there are the cases that a not-allocated pointer is set to entry->data.

In addition, this flag will be used to handle the following static menu entry
for secure boot key management series.

+       {"PK", eficonfig_process_set_secure_boot_pk, u"PK"},
+       {"KEK", eficonfig_process_set_secure_boot_key, u"KEK"},
+       {"db", eficonfig_process_set_secure_boot_key, u"db"},
+       {"dbx", eficonfig_process_set_secure_boot_key, u"dbx"},
+       {"Quit", eficonfig_process_quit},

The last parameter(u"PK", u"KEK") is set to entry->data, it will not be freed.

But this flag is a little tricky.

Thanks,
Masahisa Kojima





>
> > +             list_del(&entry->list);
> > +             free(entry);
> > +     }
> > +     free(efi_menu->menu_header);
> > +     free(efi_menu);
>
> [...]
>
> Regards
> /Ilias


More information about the U-Boot mailing list