[PATCH] mach-snapdragon: Fix overwriting last digit of serial number

Jan-Christoph Tebbe jan-christoph.tebbe at ithinx.io
Wed Apr 1 12:18:46 CEST 2020


Hello Tom,

the buffer has to hold 8 hex digits and a trailing \0, therefore 9
bytes should be enough. The problem was, that snprintf was told sn
were only 8 characters long, making snprintf to only write 7 digits
followed by the trailing \0.

Jan-Christoph

Am Fr., 20. März 2020 um 18:31 Uhr schrieb Tom Rini <trini at konsulko.com>:
>
> On Mon, Mar 16, 2020 at 05:51:51PM +0100, Jan-Christoph Tebbe wrote:
>
> > When generating the MAC address based on the boards serial number
> > the last digit was overwritten with the null termination. That way
> > boards with serial numbers close to each other would use the same
> > MAC address.
> >
> > Signed-off-by: Jan-Christoph Tebbe <Jan-Christoph.Tebbe at ithinx.io>
> > ---
> >  arch/arm/mach-snapdragon/misc.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/arch/arm/mach-snapdragon/misc.c b/arch/arm/mach-snapdragon/misc.c
> > index f6c87866c0..aaa561c2c6 100644
> > --- a/arch/arm/mach-snapdragon/misc.c
> > +++ b/arch/arm/mach-snapdragon/misc.c
> > @@ -41,7 +41,7 @@ void msm_generate_mac_addr(u8 *mac)
> >   int i;
> >   char sn[9];
> >
> > - snprintf(sn, 8, "%08x", msm_board_serial());
> > + snprintf(sn, 9, "%08x", msm_board_serial());
> >
> >   /* fill in the mac with serialno, use locally adminstrated pool */
> >   mac[0] = 0x02;
>
> OK, so sn is size 9 and now you're filling the whole thing.  Why don't
> we need to increase sn to size 10?  Am I missing something?  Thanks!
>
> --
> Tom


More information about the U-Boot mailing list