[PATCH 3/8 v2] efi_loader: Add size checks to efi_create_indexed_name()

Ilias Apalodimas ilias.apalodimas at linaro.org
Wed Dec 30 22:23:03 CET 2020


On Wed, Dec 30, 2020 at 07:34:38PM +0100, Heinrich Schuchardt wrote:
> On 12/30/20 4:07 PM, Ilias Apalodimas wrote:
> > Although the function description states the caller must provide a
> > sufficient buffer, it's better to have in function checks and ensure
> > the destination buffer can hold the intended variable name.
> > 
> > So let's add an extra argument with the buffer size and check that
> > before copying.
> > 
> > Signed-off-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
> > ---
> >   include/efi_loader.h        |  3 ++-
> >   lib/efi_loader/efi_string.c | 10 ++++++++--
> >   test/unicode_ut.c           |  2 +-
> >   3 files changed, 11 insertions(+), 4 deletions(-)
> > 
> > diff --git a/include/efi_loader.h b/include/efi_loader.h
> > index 3c68b85b68e9..af30dbafab77 100644
> > --- a/include/efi_loader.h
> > +++ b/include/efi_loader.h
> > @@ -810,7 +810,8 @@ bool efi_image_parse(void *efi, size_t len, struct efi_image_regions **regp,
> >   void efi_memcpy_runtime(void *dest, const void *src, size_t n);
> > 
> >   /* commonly used helper function */
> > -u16 *efi_create_indexed_name(u16 *buffer, const char *name, unsigned int index);
> > +u16 *efi_create_indexed_name(u16 *buffer, size_t buffer_size, const char *name,
> > +			     unsigned int index);
> > 
> >   #else /* CONFIG_IS_ENABLED(EFI_LOADER) */
> 
> Please, rebase upon origin/next.
> 
> With this patch U-Boot does not compile:
> 
> lib/efi_loader/efi_capsule.c: In function ‘set_capsule_result’:
> lib/efi_loader/efi_capsule.c:76:43: error: passing argument 2 of
> ‘efi_create_indexed_name’ makes integer from pointer without a cast
> [-Werror=int-conversion]
>    76 |  efi_create_indexed_name(variable_name16, "Capsule", index);
>       |                                           ^~~~~~~~~
>       |                                           |
>       |                                           char *
> 
> You missed to update lib/efi_loader/efi_capsule.c as you series is based
> on origin/master.

Bah sorry!
I'll rebase this on top of master and send it as a seperate patchset.

Cheers
/Ilias


More information about the U-Boot mailing list