aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHeinrich Schuchardt <xypron.glpk@gmx.de>2019-02-28 23:07:00 +0100
committerHeinrich Schuchardt <xypron.glpk@gmx.de>2019-03-02 23:34:26 +0100
commitfdef298338e4e775d41ab77b25edb695b2d8e1c0 (patch)
treed6ad8e5a47179248e57fd505d075a9afd85bf43b /lib
parent30a231dcce0b4daf6102cffcdc5c81db8ddaaa48 (diff)
downloadu-boot-fdef298338e4e775d41ab77b25edb695b2d8e1c0.zip
u-boot-fdef298338e4e775d41ab77b25edb695b2d8e1c0.tar.gz
u-boot-fdef298338e4e775d41ab77b25edb695b2d8e1c0.tar.bz2
efi_loader: HII protocols: fix new_package_list()
In new_package_list() we call new_packagelist() to create a new package list. Next we try to add the packages which fails for form packages. Due to this error we call free_packagelist(). Now in free_packagelist() list_del() is called for an uninitialized field hii->link. This leads to changing random memory addresses. To solve the problem move the initialization of hii->link to new_packagelist(). Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/efi_loader/efi_hii.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/efi_loader/efi_hii.c b/lib/efi_loader/efi_hii.c
index d63d2d8..0ed4b19 100644
--- a/lib/efi_loader/efi_hii.c
+++ b/lib/efi_loader/efi_hii.c
@@ -343,6 +343,7 @@ static struct efi_hii_packagelist *new_packagelist(void)
struct efi_hii_packagelist *hii;
hii = malloc(sizeof(*hii));
+ list_add_tail(&hii->link, &efi_package_lists);
hii->max_string_id = 0;
INIT_LIST_HEAD(&hii->string_tables);
INIT_LIST_HEAD(&hii->guid_list);
@@ -465,7 +466,6 @@ new_package_list(const struct efi_hii_database_protocol *this,
}
hii->driver_handle = driver_handle;
- list_add_tail(&hii->link, &efi_package_lists);
*handle = hii;
return EFI_EXIT(EFI_SUCCESS);