[U-Boot] [PATCH] part_efi: fix protective_mbr struct allocation

Albert ARIBAUD albert.u.boot at aribaud.net
Wed Feb 12 17:33:29 CET 2014


Hi Fabio,

On Wed, 12 Feb 2014 12:43:02 -0200, Fabio Estevam <festevam at gmail.com>
wrote:

> On Wed, Feb 12, 2014 at 12:40 PM, Hector Palacios
> <hector.palacios at digi.com> wrote:
> > The calloc() call was allocating space for the sizeof the struct
> > pointer rather than for the struct contents.
> >
> > Signed-off-by: Hector Palacios <hector.palacios at digi.com>
> > ---
> >  disk/part_efi.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/disk/part_efi.c b/disk/part_efi.c
> > index 5dfaf490c89a..7fabec059d7a 100644
> > --- a/disk/part_efi.c
> > +++ b/disk/part_efi.c
> > @@ -232,7 +232,7 @@ static int set_protective_mbr(block_dev_desc_t *dev_desc)
> >         legacy_mbr *p_mbr;
> >
> >         /* Setup the Protective MBR */
> > -       p_mbr = calloc(1, sizeof(p_mbr));
> > +       p_mbr = calloc(1, sizeof(legacy_mbr));
> 
> What about:
> 
> p_mbr = calloc(1, sizeof(*p_mbr)) ?

I don't like the idea of setting p_mbr based on *p_mbr at a time where
p_mbr is still undefined. I know that from a C standard perspective
this is ok, but I'd rather simply not run any risk and pass sizeof
the struct type, not a (non-existent) dereferenced 'value'.

> Regards,
> 
> Fabio Estevam

Amicalement,
-- 
Albert.


More information about the U-Boot mailing list