[dpdk-dev,v2,07/18] drivers/net/nfp: don't memcpy out of source range

Message ID 152582948593.6809.11000716617448256936.stgit@localhost.localdomain (mailing list archive)
State Superseded, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail apply issues

Commit Message

Andy Green May 9, 2018, 1:31 a.m. UTC
  /home/agreen/projects/dpdk/drivers/net/nfp/nfp_net.c:669:2:
error: ‘memcpy’ forming offset [5, 6] is out of the bounds
[0, 4] of object ‘tmp’ with type ‘uint32_t’ {aka ‘unsigned
int’} [-Werror=array-bounds]  memcpy(&hw->mac_addr[0],
&tmp, sizeof(struct ether_addr));

Signed-off-by: Andy Green <andy@warmcat.com>
---
 drivers/net/nfp/nfp_net.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Alejandro Lucero May 9, 2018, 9:54 a.m. UTC | #1
On Wed, May 9, 2018 at 2:31 AM, Andy Green <andy@warmcat.com> wrote:

> /home/agreen/projects/dpdk/drivers/net/nfp/nfp_net.c:669:2:
> error: ‘memcpy’ forming offset [5, 6] is out of the bounds
> [0, 4] of object ‘tmp’ with type ‘uint32_t’ {aka ‘unsigned
> int’} [-Werror=array-bounds]  memcpy(&hw->mac_addr[0],
> &tmp, sizeof(struct ether_addr));
>
> Signed-off-by: Andy Green <andy@warmcat.com>
> ---
>  drivers/net/nfp/nfp_net.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
> index 048324ec9..199aac40b 100644
> --- a/drivers/net/nfp/nfp_net.c
> +++ b/drivers/net/nfp/nfp_net.c
> @@ -666,7 +666,7 @@ nfp_net_vf_read_mac(struct nfp_net_hw *hw)
>         uint32_t tmp;
>
>         tmp = rte_be_to_cpu_32(nn_cfg_readl(hw, NFP_NET_CFG_MACADDR));
> -       memcpy(&hw->mac_addr[0], &tmp, sizeof(struct ether_addr));
> +       memcpy(&hw->mac_addr[0], &tmp, 4);
>
>         tmp = rte_be_to_cpu_32(nn_cfg_readl(hw, NFP_NET_CFG_MACADDR + 4));
>         memcpy(&hw->mac_addr[4], &tmp, 2);
>
>
Acked-by: Alejandro Lucero <alejandro.lucero@netronome.com>
Tested-by: Alejandro Lucero <alejandro.lucero@netronome.com>
  

Patch

diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
index 048324ec9..199aac40b 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -666,7 +666,7 @@  nfp_net_vf_read_mac(struct nfp_net_hw *hw)
 	uint32_t tmp;
 
 	tmp = rte_be_to_cpu_32(nn_cfg_readl(hw, NFP_NET_CFG_MACADDR));
-	memcpy(&hw->mac_addr[0], &tmp, sizeof(struct ether_addr));
+	memcpy(&hw->mac_addr[0], &tmp, 4);
 
 	tmp = rte_be_to_cpu_32(nn_cfg_readl(hw, NFP_NET_CFG_MACADDR + 4));
 	memcpy(&hw->mac_addr[4], &tmp, 2);