[dpdk-dev,v4,10/18] net/qede: solve broken strncpy

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

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Andy Green May 11, 2018, 1:46 a.m. UTC
  /home/agreen/projects/dpdk/drivers/net/qede/qede_main.c: In function
‘qed_slowpath_start’:
/home/agreen/projects/dpdk/drivers/net/qede/qede_main.c:307:3:
error: ‘strncpy’ output may be truncated copying 12 bytes from a
string of length 127 [-Werror=stringop-truncation]
   strncpy((char *)drv_version.name, (const char *)params->name,
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    MCP_DRV_VER_STR_SIZE - 4);
    ~~~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Andy Green <andy@warmcat.com>
---
 drivers/net/qede/qede_main.c |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
  

Comments

De Lara Guarch, Pablo May 11, 2018, 10:47 a.m. UTC | #1
> -----Original Message-----

> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Andy Green

> Sent: Friday, May 11, 2018 2:46 AM

> To: dev@dpdk.org

> Subject: [dpdk-dev] [PATCH v4 10/18] net/qede: solve broken strncpy

> 

> /home/agreen/projects/dpdk/drivers/net/qede/qede_main.c: In function

> ‘qed_slowpath_start’:

> /home/agreen/projects/dpdk/drivers/net/qede/qede_main.c:307:3:

> error: ‘strncpy’ output may be truncated copying 12 bytes from a string of length

> 127 [-Werror=stringop-truncation]

>    strncpy((char *)drv_version.name, (const char *)params->name,

>    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

>     MCP_DRV_VER_STR_SIZE - 4);

>     ~~~~~~~~~~~~~~~~~~~~~~~~~

> 

> Signed-off-by: Andy Green <andy@warmcat.com>

> ---

>  drivers/net/qede/qede_main.c |    7 ++++---

>  1 file changed, 4 insertions(+), 3 deletions(-)

> 

> diff --git a/drivers/net/qede/qede_main.c b/drivers/net/qede/qede_main.c

> index 2333ca073..fcfc32d0d 100644

> --- a/drivers/net/qede/qede_main.c

> +++ b/drivers/net/qede/qede_main.c

> @@ -9,6 +9,7 @@

>  #include <limits.h>

>  #include <time.h>

>  #include <rte_alarm.h>

> +#include <rte_string_fns.h>

> 

>  #include "qede_ethdev.h"

> 

> @@ -303,9 +304,9 @@ static int qed_slowpath_start(struct ecore_dev *edev,

>  		drv_version.version = (params->drv_major << 24) |

>  		    (params->drv_minor << 16) |

>  		    (params->drv_rev << 8) | (params->drv_eng);

> -		/* TBD: strlcpy() */

> -		strncpy((char *)drv_version.name, (const char *)params->name,

> -			MCP_DRV_VER_STR_SIZE - 4);

> +		strlcpy((char *)drv_version.name, (const char *)params->name,

> +			sizeof(drv_version.name));

> +		drv_version.name[sizeof(drv_version.name) - 1] = '\0';


Strlcpy already terminates the buffer with NULL character, so this last line is not needed.

Also, missing fix line and CC stable

Fixes: 86a2265e59d7 ("qede: add SRIOV support")
Cc: stable@dpdk.org
  

Patch

diff --git a/drivers/net/qede/qede_main.c b/drivers/net/qede/qede_main.c
index 2333ca073..fcfc32d0d 100644
--- a/drivers/net/qede/qede_main.c
+++ b/drivers/net/qede/qede_main.c
@@ -9,6 +9,7 @@ 
 #include <limits.h>
 #include <time.h>
 #include <rte_alarm.h>
+#include <rte_string_fns.h>
 
 #include "qede_ethdev.h"
 
@@ -303,9 +304,9 @@  static int qed_slowpath_start(struct ecore_dev *edev,
 		drv_version.version = (params->drv_major << 24) |
 		    (params->drv_minor << 16) |
 		    (params->drv_rev << 8) | (params->drv_eng);
-		/* TBD: strlcpy() */
-		strncpy((char *)drv_version.name, (const char *)params->name,
-			MCP_DRV_VER_STR_SIZE - 4);
+		strlcpy((char *)drv_version.name, (const char *)params->name,
+			sizeof(drv_version.name));
+		drv_version.name[sizeof(drv_version.name) - 1] = '\0';
 		rc = ecore_mcp_send_drv_version(hwfn, hwfn->p_main_ptt,
 						&drv_version);
 		if (rc) {