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

Albert ARIBAUD
2014-02-12T16:33:29Z

Hi Fabio,

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

> On Wed, Feb 12, 2014 at 12:40 PM, Hector Palacios
> <hector.palacios@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@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.