2014-06-24 8:48 GMT-07:00 Joe Perches <joe@xxxxxxxxxxx>: > On Tue, 2014-06-24 at 16:39 +0100, Daniel Walter wrote: >> Replace sscanf() with mac_pton(). > [] >> diff --git a/arch/mips/ar7/platform.c b/arch/mips/ar7/platform.c > [] >> @@ -307,10 +307,7 @@ static void __init cpmac_get_mac(int instance, unsigned char *dev_addr) >> } >> >> if (mac) { >> - if (sscanf(mac, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", >> - &dev_addr[0], &dev_addr[1], >> - &dev_addr[2], &dev_addr[3], >> - &dev_addr[4], &dev_addr[5]) != 6) { >> + if (!mac_pton(mac, dev_addr)) { > > There is a slight functional change with this conversion. > > mac_pton is strict about leading 0's and requires a 17 char strlen. I do not have my devices handy, but I am fairly positive the use of sscanf() was exactly for that, we may or may not have leading zeroes. I am feeling a little uncomfortable with random code changes like that without being actually able to test on real hardware that has a variety of bootloaders and environment variables. > > sscanf will accept 0:1:2:3:4:5, mac_pton will not. > >> pr_warning("cannot parse mac address, " >> "using random address\n"); > > could be coalesced and pr_warn > > pr_warn("cannot parse mac address - using random address\n"); > > > -- Florian