On Fri, Nov 25, 2016 at 9:30 AM, Olliver Schinagl <oli...@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 <oli...@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.

Maybe ETH_ENETADDR_ENV_NAME_LEN?

>  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@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to