[U-Boot] [PATCH 04/14] net: core: Sanitize get/set operations for enetaddr
Olliver Schinagl
oliver at schinagl.nl
Fri Dec 2 20:04:47 CET 2016
Hey Joe,
On 30-11-16 20:20, Joe Hershberger wrote:
> On Fri, Nov 25, 2016 at 9:30 AM, Olliver Schinagl <oliver at schinagl.nl> wrote:
>> In the current net stack, we have a few functions to get and set
>> the "ethaddr" and "ethNaddr" environment variables, which use magic
>> values to get and set these environment variables. Remove the magicness
>> of the buffer by defining it proper and also check the input for its
>> length.
>>
>> Additionally use the define in fdt parser where the ethaddr variables
>> are also used.
>>
>> Signed-off-by: Olliver Schinagl <oliver at schinagl.nl>
>> ---
>> common/fdt_support.c | 2 +-
>> include/net.h | 1 +
>> net/eth_common.c | 12 ++++++++----
>> 3 files changed, 10 insertions(+), 5 deletions(-)
>>
>> diff --git a/common/fdt_support.c b/common/fdt_support.c
>> index b082662..89e6e47 100644
>> --- a/common/fdt_support.c
>> +++ b/common/fdt_support.c
>> @@ -469,7 +469,7 @@ void fdt_fixup_ethernet(void *fdt)
>> {
>> int i, j, prop;
>> char *tmp, *end;
>> - char mac[16];
>> + char mac[ETH_ENETADDR_LEN];
>> const char *path;
>> unsigned char mac_addr[ARP_HLEN];
>> int offset;
>> diff --git a/include/net.h b/include/net.h
>> index 9cd7870..2534913 100644
>> --- a/include/net.h
>> +++ b/include/net.h
>> @@ -243,6 +243,7 @@ void eth_set_current(void); /* set nterface to ethcur var */
>>
>> int eth_get_dev_index(void); /* get the device index */
>> void eth_parse_enetaddr(const char *addr, uchar *enetaddr);
>> +#define ETH_ENETADDR_LEN 32
> I'd prefer a clearer name here.
I'd agree, but
>
> Maybe ETH_ENETADDR_ENV_NAME_LEN?
I do find it to be quite a long name. Which makes the whole 80 charcters
per line a thing.
But done :)
>
>> int eth_getenv_enetaddr(const char *name, uchar *enetaddr);
>> int eth_setenv_enetaddr(const char *name, const uchar *enetaddr);
>>
>> diff --git a/net/eth_common.c b/net/eth_common.c
>> index e9d3c66..079be89 100644
>> --- a/net/eth_common.c
>> +++ b/net/eth_common.c
>> @@ -42,16 +42,20 @@ int eth_setenv_enetaddr(const char *name, const uchar *enetaddr)
>> int eth_getenv_enetaddr_by_index(const char *base_name, int index,
>> uchar *enetaddr)
>> {
>> - char enetvar[32];
>> - sprintf(enetvar, index ? "%s%daddr" : "%saddr", base_name, index);
>> + char enetvar[ETH_ENETADDR_LEN];
>> +
>> + snprintf(enetvar, ETH_ENETADDR_LEN, index ? "%s%daddr" : "%saddr",
>> + base_name, index);
>> return eth_getenv_enetaddr(enetvar, enetaddr);
>> }
>>
>> int eth_setenv_enetaddr_by_index(const char *base_name, int index,
>> uchar *enetaddr)
>> {
>> - char enetvar[32];
>> - sprintf(enetvar, index ? "%s%daddr" : "%saddr", base_name, index);
>> + char enetvar[ETH_ENETADDR_LEN];
>> +
>> + snprintf(enetvar, ETH_ENETADDR_LEN, index ? "%s%daddr" : "%saddr",
>> + base_name, index);
>> return eth_setenv_enetaddr(enetvar, enetaddr);
>> }
>>
>> --
>> 2.10.2
>>
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> http://lists.denx.de/mailman/listinfo/u-boot
More information about the U-Boot
mailing list