net/cnxk: fix segmentation fault in telemetry

Message ID 20220630092422.114332-1-usman.tanveer@emumba.com (mailing list archive)
State Not Applicable, archived
Delegated to: Jerin Jacob
Headers
Series net/cnxk: fix segmentation fault in telemetry |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-testing warning apply patch failure
ci/Intel-compilation warning apply issues

Commit Message

Usman Tanveer June 30, 2022, 9:24 a.m. UTC
  It gives segmentation fault when no parameter is passed for
command '/cnxk/ipsec/info' in usertools/telemetry app as NULL
is being passed as parameter to strtoul(). Now this function
returns -1 before strtoul() if no parameter is passed.

Signed-off-by: Usman Tanveer <usman.tanveer@emumba.com>
---
 drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c | 3 +++
 1 file changed, 3 insertions(+)
  

Comments

David Marchand June 30, 2022, 9:34 a.m. UTC | #1
On Thu, Jun 30, 2022 at 11:24 AM Usman Tanveer <usman.tanveer@emumba.com> wrote:
>
> It gives segmentation fault when no parameter is passed for
> command '/cnxk/ipsec/info' in usertools/telemetry app as NULL
> is being passed as parameter to strtoul(). Now this function
> returns -1 before strtoul() if no parameter is passed.
>
> Signed-off-by: Usman Tanveer <usman.tanveer@emumba.com>
> ---
>  drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c b/drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c
> index dfad5af8fe..088798d70a 100644
> --- a/drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c
> +++ b/drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c
> @@ -229,6 +229,9 @@ ethdev_sec_tel_handle_info(const char *cmd __rte_unused, const char *params,
>         uint32_t i;
>         int ret;
>
> +       if (params == NULL || strlen(params) == 0 || !isdigit(*params))
> +               return -1;
> +
>         port_id = strtoul(params, &end_p, 0);
>         if (errno != 0)
>                 return -EINVAL;

Duplicate of already merged: https://git.dpdk.org/dpdk/commit/?id=a31c9f970dfd
  

Patch

diff --git a/drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c b/drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c
index dfad5af8fe..088798d70a 100644
--- a/drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c
+++ b/drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c
@@ -229,6 +229,9 @@  ethdev_sec_tel_handle_info(const char *cmd __rte_unused, const char *params,
 	uint32_t i;
 	int ret;
 
+	if (params == NULL || strlen(params) == 0 || !isdigit(*params))
+		return -1;
+
 	port_id = strtoul(params, &end_p, 0);
 	if (errno != 0)
 		return -EINVAL;