[PATCH v2] bootstd: Fix a memory leak in the efi manager bootflow

Mark Kettenis mark.kettenis at xs4all.nl
Thu Dec 7 17:54:06 CET 2023


> From: Ilias Apalodimas <ilias.apalodimas at linaro.org>
> Date: Thu,  7 Dec 2023 14:36:36 +0200
> 
> efi_get_var() allocates memory which has to be freed after the value of
> the variable is consumed. Free the memory properly
> 
> Fixes: f2bfa0cb1794 ("bootstd: Make efi_mgr bootmeth work for non-sandbox setups")
> Signed-off-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
> ---
> Apologies for the quick resend but the previous patches wasn't compiling due to
> the missing #include <malloc.h>
> 
> Changes since v1
> - Add #include <malloc.h> since it's needed for free()
> 
>  boot/bootmeth_efi_mgr.c | 2 ++
>  1 file changed, 2 insertions(+)

Oops!

Reviewed-by: Mark Kettenis <kettenis at openbsd.org>

> diff --git a/boot/bootmeth_efi_mgr.c b/boot/bootmeth_efi_mgr.c
> index e6c42d41fb80..6428c096d7f8 100644
> --- a/boot/bootmeth_efi_mgr.c
> +++ b/boot/bootmeth_efi_mgr.c
> @@ -16,6 +16,7 @@
>  #include <dm.h>
>  #include <efi_loader.h>
>  #include <efi_variable.h>
> +#include <malloc.h>
> 
>  /**
>   * struct efi_mgr_priv - private info for the efi-mgr driver
> @@ -65,6 +66,7 @@ static int efi_mgr_read_bootflow(struct udevice *dev, struct bootflow *bflow)
>  	bootorder = efi_get_var(u"BootOrder", &efi_global_variable_guid,
>  				&size);
>  	if (bootorder) {
> +		free(bootorder);
>  		bflow->state = BOOTFLOWST_READY;
>  		return 0;
>  	}
> --
> 2.40.1
> 
> 


More information about the U-Boot mailing list