[dpdk-dev,v6,10/16] net/qede: solve broken strncpy
Checks
Commit Message
/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>
Fixes: 86a2265e59d7 ("qede: add SRIOV support")
Cc: stable@dpdk.org
---
drivers/net/qede/qede_main.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
Comments
On 5/14/2018 6:00 AM, Andy Green wrote:
> /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>
> Fixes: 86a2265e59d7 ("qede: add SRIOV support")
> Cc: stable@dpdk.org
> ---
> 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';
Why set '\0'? doesn't strlcpy assures it?
> rc = ecore_mcp_send_drv_version(hwfn, hwfn->p_main_ptt,
> &drv_version);
> if (rc) {
>
On 5/14/2018 9:20 PM, Ferruh Yigit wrote:
> On 5/14/2018 6:00 AM, Andy Green wrote:
>> /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>
>> Fixes: 86a2265e59d7 ("qede: add SRIOV support")
>> Cc: stable@dpdk.org
>> ---
>> 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';
>
> Why set '\0'? doesn't strlcpy assures it?
Will remove this line while applying, with the change:
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
>
>> rc = ecore_mcp_send_drv_version(hwfn, hwfn->p_main_ptt,
>> &drv_version);
>> if (rc) {
>>
>
On 05/15/2018 05:14 AM, Ferruh Yigit wrote:
> On 5/14/2018 9:20 PM, Ferruh Yigit wrote:
>> On 5/14/2018 6:00 AM, Andy Green wrote:
>>> /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>
>>> Fixes: 86a2265e59d7 ("qede: add SRIOV support")
>>> Cc: stable@dpdk.org
>>> ---
>>> 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';
>>
>> Why set '\0'? doesn't strlcpy assures it?
Yeah... it's a leftover.
> Will remove this line while applying, with the change:
> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Thanks.
-Andy
>>
>>> rc = ecore_mcp_send_drv_version(hwfn, hwfn->p_main_ptt,
>>> &drv_version);
>>> if (rc) {
>>>
>>
>
@@ -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) {