DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH v2 00/16] verify strdup return value
@ 2023-11-10 10:01 Chengwen Feng
  2023-11-10 10:01 ` [PATCH v2 01/16] eal: " Chengwen Feng
                   ` (17 more replies)
  0 siblings, 18 replies; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit; +Cc: dev

This patchset mainly fix the return value of strdup not checked which
may lead to segment fault. It also include two commits which fix memory
leak of strdup.

Chengwen Feng (16):
  eal: verify strdup return value
  bus/dpaa: verify strdup return value
  bus/fslmc: verify strdup return value
  bus/vdev: verify strdup return value
  dma/idxd: verify strdup return value
  event/cnxk: verify strdup return value
  net/failsafe: fix memory leak when parse args
  net/nfp: verify strdup return value
  app/dumpcap: verify strdup return value
  app/pdump: verify strdup return value
  app/test: verify strdup return value
  app/test-crypto-perf: verify strdup return value
  app/test-dma-perf: verify strdup return value
  app/testpmd: verify strdup return value
  examples/qos_sched: fix memory leak when parse args
  examples/vhost: verify strdup return value

---
v2: fix 0-day warning of app/dumpcap commit.

 app/dumpcap/main.c                           |  5 ++++
 app/pdump/main.c                             |  3 +++
 app/test-crypto-perf/cperf_options_parsing.c |  4 ++++
 app/test-dma-perf/main.c                     |  2 ++
 app/test-pmd/cmdline.c                       |  2 ++
 app/test/process.h                           |  5 +++-
 drivers/bus/dpaa/dpaa_bus.c                  |  4 ++++
 drivers/bus/fslmc/fslmc_bus.c                |  4 ++++
 drivers/bus/vdev/vdev.c                      |  4 ++++
 drivers/dma/idxd/idxd_bus.c                  | 10 ++++++--
 drivers/event/cnxk/cnxk_eventdev.c           |  3 +++
 drivers/net/failsafe/failsafe_args.c         |  2 +-
 drivers/net/nfp/nfp_ipsec.c                  |  5 ++++
 examples/qos_sched/args.c                    |  4 +++-
 examples/vhost/main.c                        |  3 +++
 lib/eal/common/eal_common_options.c          | 24 ++++++++++++++++++--
 lib/eal/linux/eal_dev.c                      |  3 +++
 17 files changed, 80 insertions(+), 7 deletions(-)

-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 01/16] eal: verify strdup return value
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
@ 2023-11-10 10:01 ` Chengwen Feng
  2023-11-21  3:44   ` lihuisong (C)
  2023-11-10 10:01 ` [PATCH v2 02/16] bus/dpaa: " Chengwen Feng
                   ` (16 subsequent siblings)
  17 siblings, 1 reply; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit, Keith Wiles, Ciara Power, Bruce Richardson,
	Jeff Guo, Jianfeng Tan
  Cc: dev

Add verify strdup() return value logic.

Fixes: 293c53d8b23c ("eal: add telemetry callbacks")
Fixes: 0d0f478d0483 ("eal/linux: add uevent parse and process")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
 lib/eal/common/eal_common_options.c | 24 ++++++++++++++++++++++--
 lib/eal/linux/eal_dev.c             |  3 +++
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/lib/eal/common/eal_common_options.c b/lib/eal/common/eal_common_options.c
index a6d21f1cba..8b5a4632dd 100644
--- a/lib/eal/common/eal_common_options.c
+++ b/lib/eal/common/eal_common_options.c
@@ -226,6 +226,8 @@ eal_save_args(int argc, char **argv)
 		if (strcmp(argv[i], "--") == 0)
 			break;
 		eal_args[i] = strdup(argv[i]);
+		if (eal_args[i] == NULL)
+			goto error;
 	}
 	eal_args[i++] = NULL; /* always finish with NULL */
 
@@ -235,13 +237,31 @@ eal_save_args(int argc, char **argv)
 
 	eal_app_args = calloc(argc - i + 1, sizeof(*eal_args));
 	if (eal_app_args == NULL)
-		return -1;
+		goto error;
 
-	for (j = 0; i < argc; j++, i++)
+	for (j = 0; i < argc; j++, i++) {
 		eal_app_args[j] = strdup(argv[i]);
+		if (eal_app_args[j] == NULL)
+			goto error;
+	}
 	eal_app_args[j] = NULL;
 
 	return 0;
+
+error:
+	if (eal_app_args != NULL) {
+		i = 0;
+		while (eal_app_args[i] != NULL)
+			free(eal_app_args[i++]);
+		free(eal_app_args);
+		eal_app_args = NULL;
+	}
+	i = 0;
+	while (eal_args[i] != NULL)
+		free(eal_args[i++]);
+	free(eal_args);
+	eal_args = NULL;
+	return -1;
 }
 #endif
 
diff --git a/lib/eal/linux/eal_dev.c b/lib/eal/linux/eal_dev.c
index ac76f6174d..df3cd6b39a 100644
--- a/lib/eal/linux/eal_dev.c
+++ b/lib/eal/linux/eal_dev.c
@@ -181,7 +181,10 @@ dev_uev_parse(const char *buf, struct rte_dev_event *event, int length)
 			buf += 14;
 			i += 14;
 			strlcpy(pci_slot_name, buf, sizeof(subsystem));
+			free(event->devname);
 			event->devname = strdup(pci_slot_name);
+			if (event->devname == NULL)
+				return -1;
 		}
 		for (; i < length; i++) {
 			if (*buf == '\0')
-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 02/16] bus/dpaa: verify strdup return value
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
  2023-11-10 10:01 ` [PATCH v2 01/16] eal: " Chengwen Feng
@ 2023-11-10 10:01 ` Chengwen Feng
  2023-11-15  2:43   ` Sachin Saxena
  2023-11-10 10:01 ` [PATCH v2 03/16] bus/fslmc: " Chengwen Feng
                   ` (15 subsequent siblings)
  17 siblings, 1 reply; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit, Hemant Agrawal, Sachin Saxena, Shreyansh Jain; +Cc: dev

Add verify strdup return value logic.

Fixes: e79df833d3f6 ("bus/dpaa: support hotplug ops")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
 drivers/bus/dpaa/dpaa_bus.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index e57159f5d8..a67f5c9ab5 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -791,6 +791,10 @@ dpaa_bus_dev_iterate(const void *start, const char *str,
 
 	/* Now that name=device_name format is available, split */
 	dup = strdup(str);
+	if (dup == NULL) {
+		DPAA_BUS_DEBUG("Dup string (%s) failed!\n", str);
+		return NULL;
+	}
 	dev_name = dup + strlen("name=");
 
 	if (start != NULL) {
-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 03/16] bus/fslmc: verify strdup return value
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
  2023-11-10 10:01 ` [PATCH v2 01/16] eal: " Chengwen Feng
  2023-11-10 10:01 ` [PATCH v2 02/16] bus/dpaa: " Chengwen Feng
@ 2023-11-10 10:01 ` Chengwen Feng
  2023-11-15  2:43   ` Sachin Saxena
  2023-11-10 10:01 ` [PATCH v2 04/16] bus/vdev: " Chengwen Feng
                   ` (14 subsequent siblings)
  17 siblings, 1 reply; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit, Hemant Agrawal, Sachin Saxena, Shreyansh Jain; +Cc: dev

Add verify strdup return value logic.

Fixes: e67a61614d0b ("bus/fslmc: support device iteration")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
 drivers/bus/fslmc/fslmc_bus.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c
index 57bfb5111a..89f0f329c0 100644
--- a/drivers/bus/fslmc/fslmc_bus.c
+++ b/drivers/bus/fslmc/fslmc_bus.c
@@ -634,6 +634,10 @@ fslmc_bus_dev_iterate(const void *start, const char *str,
 
 	/* Now that name=device_name format is available, split */
 	dup = strdup(str);
+	if (dup == NULL) {
+		DPAA2_BUS_DEBUG("Dup string (%s) failed!\n", str);
+		return NULL;
+	}
 	dev_name = dup + strlen("name=");
 
 	if (start != NULL) {
-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 04/16] bus/vdev: verify strdup return value
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
                   ` (2 preceding siblings ...)
  2023-11-10 10:01 ` [PATCH v2 03/16] bus/fslmc: " Chengwen Feng
@ 2023-11-10 10:01 ` Chengwen Feng
  2023-11-21  3:36   ` lihuisong (C)
  2023-11-10 10:01 ` [PATCH v2 05/16] dma/idxd: " Chengwen Feng
                   ` (13 subsequent siblings)
  17 siblings, 1 reply; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit, Gaetan Rivet, Xueming Li, Ray Kinsella; +Cc: dev

Add verify strdup return value logic.

Fixes: 64051bb1f144 ("devargs: unify scratch buffer storage")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
 drivers/bus/vdev/vdev.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c
index 7974b27295..05582f1727 100644
--- a/drivers/bus/vdev/vdev.c
+++ b/drivers/bus/vdev/vdev.c
@@ -247,6 +247,10 @@ alloc_devargs(const char *name, const char *args)
 		devargs->data = strdup(args);
 	else
 		devargs->data = strdup("");
+	if (devargs->data == NULL) {
+		free(devargs);
+		return NULL;
+	}
 	devargs->args = devargs->data;
 
 	ret = strlcpy(devargs->name, name, sizeof(devargs->name));
-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 05/16] dma/idxd: verify strdup return value
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
                   ` (3 preceding siblings ...)
  2023-11-10 10:01 ` [PATCH v2 04/16] bus/vdev: " Chengwen Feng
@ 2023-11-10 10:01 ` Chengwen Feng
  2023-11-10 10:01 ` [PATCH v2 06/16] event/cnxk: " Chengwen Feng
                   ` (12 subsequent siblings)
  17 siblings, 0 replies; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit, Bruce Richardson, Kevin Laatz, Conor Walsh; +Cc: dev

Add verify strdup return value logic.

Fixes: e888bb1278c6 ("dma/idxd: add bus device probing")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
 drivers/dma/idxd/idxd_bus.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/dma/idxd/idxd_bus.c b/drivers/dma/idxd/idxd_bus.c
index 3b2d4c2b65..ba8076715d 100644
--- a/drivers/dma/idxd/idxd_bus.c
+++ b/drivers/dma/idxd/idxd_bus.c
@@ -261,9 +261,15 @@ static int
 is_for_this_process_use(struct rte_dsa_device *dev, const char *name)
 {
 	char *runtime_dir = strdup(rte_eal_get_runtime_dir());
-	char *prefix = basename(runtime_dir);
-	int prefixlen = strlen(prefix);
 	int retval = 0;
+	int prefixlen;
+	char *prefix;
+
+	if (runtime_dir == NULL)
+		return retval;
+
+	prefix = basename(runtime_dir);
+	prefixlen = strlen(prefix);
 
 	if (strncmp(name, "dpdk_", 5) == 0)
 		retval = 1;
-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 06/16] event/cnxk: verify strdup return value
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
                   ` (4 preceding siblings ...)
  2023-11-10 10:01 ` [PATCH v2 05/16] dma/idxd: " Chengwen Feng
@ 2023-11-10 10:01 ` Chengwen Feng
  2023-11-10 10:01 ` [PATCH v2 07/16] net/failsafe: fix memory leak when parse args Chengwen Feng
                   ` (11 subsequent siblings)
  17 siblings, 0 replies; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit, Pavan Nikhilesh, Shijith Thotton; +Cc: dev

Add verify strdup return value logic.

Fixes: 38c2e3240ba8 ("event/cnxk: add option to control SSO HWGRP QoS")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
 drivers/event/cnxk/cnxk_eventdev.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/event/cnxk/cnxk_eventdev.c b/drivers/event/cnxk/cnxk_eventdev.c
index 0c61f4c20e..1ec281e735 100644
--- a/drivers/event/cnxk/cnxk_eventdev.c
+++ b/drivers/event/cnxk/cnxk_eventdev.c
@@ -553,6 +553,9 @@ parse_list(const char *value, void *opaque, param_parse_t fn)
 	char *end = NULL;
 	char *f = s;
 
+	if (s == NULL)
+		return;
+
 	while (*s) {
 		if (*s == '[')
 			start = s;
-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 07/16] net/failsafe: fix memory leak when parse args
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
                   ` (5 preceding siblings ...)
  2023-11-10 10:01 ` [PATCH v2 06/16] event/cnxk: " Chengwen Feng
@ 2023-11-10 10:01 ` Chengwen Feng
  2023-11-10 10:01 ` [PATCH v2 08/16] net/nfp: verify strdup return value Chengwen Feng
                   ` (10 subsequent siblings)
  17 siblings, 0 replies; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit, Gaetan Rivet, Olga Shern; +Cc: dev

Should free the memory which allocated by strdup().

Fixes: a46f8d584eb8 ("net/failsafe: add fail-safe PMD")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
 drivers/net/failsafe/failsafe_args.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/failsafe/failsafe_args.c b/drivers/net/failsafe/failsafe_args.c
index b203e02d9a..3b867437d7 100644
--- a/drivers/net/failsafe/failsafe_args.c
+++ b/drivers/net/failsafe/failsafe_args.c
@@ -248,7 +248,7 @@ fs_parse_device_param(struct rte_eth_dev *dev, const char *param,
 			goto free_args;
 	} else {
 		ERROR("Unrecognized device type: %.*s", (int)b, param);
-		return -EINVAL;
+		ret = -EINVAL;
 	}
 free_args:
 	free(args);
-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 08/16] net/nfp: verify strdup return value
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
                   ` (6 preceding siblings ...)
  2023-11-10 10:01 ` [PATCH v2 07/16] net/failsafe: fix memory leak when parse args Chengwen Feng
@ 2023-11-10 10:01 ` Chengwen Feng
  2023-11-10 10:01 ` [PATCH v2 09/16] app/dumpcap: " Chengwen Feng
                   ` (9 subsequent siblings)
  17 siblings, 0 replies; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit, Chaoyong He, Shihong Wang, Chang Miao; +Cc: dev

Add verify strdup return value logic.

Fixes: 3d21da66c06b ("net/nfp: create security session")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Acked-by: Chaoyong He <chaoyong.he@corigine.com>
---
 drivers/net/nfp/nfp_ipsec.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/nfp/nfp_ipsec.c b/drivers/net/nfp/nfp_ipsec.c
index 452947380e..7ce9cca0b2 100644
--- a/drivers/net/nfp/nfp_ipsec.c
+++ b/drivers/net/nfp/nfp_ipsec.c
@@ -524,6 +524,11 @@ nfp_aesgcm_iv_update(struct ipsec_add_sa *cfg,
 	uint8_t *cfg_iv;
 
 	iv_str = strdup(iv_string);
+	if (iv_str == NULL) {
+		PMD_DRV_LOG(ERR, "Failed to strdup iv_string");
+		return;
+	}
+
 	cfg_iv = (uint8_t *)cfg->aesgcm_fields.iv;
 
 	for (i = 0; i < iv_len; i++) {
-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 09/16] app/dumpcap: verify strdup return value
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
                   ` (7 preceding siblings ...)
  2023-11-10 10:01 ` [PATCH v2 08/16] net/nfp: verify strdup return value Chengwen Feng
@ 2023-11-10 10:01 ` Chengwen Feng
  2023-11-10 10:01 ` [PATCH v2 10/16] app/pdump: " Chengwen Feng
                   ` (8 subsequent siblings)
  17 siblings, 0 replies; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit, Reshma Pattan, Stephen Hemminger; +Cc: dev

Add verify strdup return value logic.

Fixes: cbb44143be74 ("app/dumpcap: add new packet capture application")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
 app/dumpcap/main.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/app/dumpcap/main.c b/app/dumpcap/main.c
index 64294bbfb3..6f49703c50 100644
--- a/app/dumpcap/main.c
+++ b/app/dumpcap/main.c
@@ -639,6 +639,11 @@ static void dpdk_init(void)
 		eal_argv[i++] = strdup(file_prefix);
 	}
 
+	for (i = 0; i < (unsigned int)eal_argc; i++) {
+		if (eal_argv[i] == NULL)
+			rte_panic("No memory\n");
+	}
+
 	if (rte_eal_init(eal_argc, eal_argv) < 0)
 		rte_exit(EXIT_FAILURE, "EAL init failed: is primary process running?\n");
 }
-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 10/16] app/pdump: verify strdup return value
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
                   ` (8 preceding siblings ...)
  2023-11-10 10:01 ` [PATCH v2 09/16] app/dumpcap: " Chengwen Feng
@ 2023-11-10 10:01 ` Chengwen Feng
  2023-11-10 10:01 ` [PATCH v2 11/16] app/test: " Chengwen Feng
                   ` (7 subsequent siblings)
  17 siblings, 0 replies; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit, Reshma Pattan, Stephen Hemminger,
	konstantin.ananyev
  Cc: dev

Add verify strdup return value logic.

Fixes: caa7028276b8 ("app/pdump: add tool for packet capturing")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
 app/pdump/main.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/app/pdump/main.c b/app/pdump/main.c
index 7a1c7bdf60..a9205e130b 100644
--- a/app/pdump/main.c
+++ b/app/pdump/main.c
@@ -171,6 +171,9 @@ parse_device_id(const char *key __rte_unused, const char *value,
 	struct pdump_tuples *pt = extra_args;
 
 	pt->device_id = strdup(value);
+	if (pt->device_id == NULL)
+		return -1;
+
 	pt->dump_by_type = DEVICE_ID;
 
 	return 0;
-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 11/16] app/test: verify strdup return value
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
                   ` (9 preceding siblings ...)
  2023-11-10 10:01 ` [PATCH v2 10/16] app/pdump: " Chengwen Feng
@ 2023-11-10 10:01 ` Chengwen Feng
  2023-11-21  3:33   ` lihuisong (C)
  2023-11-10 10:01 ` [PATCH v2 12/16] app/test-crypto-perf: " Chengwen Feng
                   ` (6 subsequent siblings)
  17 siblings, 1 reply; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit; +Cc: dev

Add verify strdup return value logic.

Fixes: af75078fece3 ("first public release")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
 app/test/process.h | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/app/test/process.h b/app/test/process.h
index af7bc3e0de..c576c42349 100644
--- a/app/test/process.h
+++ b/app/test/process.h
@@ -59,8 +59,11 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
 		return -1;
 	else if (pid == 0) {
 		/* make a copy of the arguments to be passed to exec */
-		for (i = 0; i < numargs; i++)
+		for (i = 0; i < numargs; i++) {
 			argv_cpy[i] = strdup(argv[i]);
+			if (argv_cpy[i] == NULL)
+				rte_panic("Error dup args\n");
+		}
 		argv_cpy[i] = NULL;
 		num = numargs;
 
-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 12/16] app/test-crypto-perf: verify strdup return value
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
                   ` (10 preceding siblings ...)
  2023-11-10 10:01 ` [PATCH v2 11/16] app/test: " Chengwen Feng
@ 2023-11-10 10:01 ` Chengwen Feng
  2023-11-10 10:01 ` [PATCH v2 13/16] app/test-dma-perf: " Chengwen Feng
                   ` (5 subsequent siblings)
  17 siblings, 0 replies; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit, Ciara Power, Michal Kobylinski,
	Declan Doherty, Slawomir Mrozowicz, Marcin Kerlin,
	Piotr Azarewicz
  Cc: dev

Add verify strdup return value logic.

Fixes: f8be1786b1b8 ("app/crypto-perf: introduce performance test application")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
 app/test-crypto-perf/cperf_options_parsing.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/app/test-crypto-perf/cperf_options_parsing.c b/app/test-crypto-perf/cperf_options_parsing.c
index 75afedc7fd..8909b5690d 100644
--- a/app/test-crypto-perf/cperf_options_parsing.c
+++ b/app/test-crypto-perf/cperf_options_parsing.c
@@ -516,6 +516,10 @@ parse_test_file(struct cperf_options *opts,
 		const char *arg)
 {
 	opts->test_file = strdup(arg);
+	if (opts->test_file == NULL) {
+		RTE_LOG(ERR, USER1, "Dup vector file failed!\n");
+		return -1;
+	}
 	if (access(opts->test_file, F_OK) != -1)
 		return 0;
 	RTE_LOG(ERR, USER1, "Test vector file doesn't exist\n");
-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 13/16] app/test-dma-perf: verify strdup return value
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
                   ` (11 preceding siblings ...)
  2023-11-10 10:01 ` [PATCH v2 12/16] app/test-crypto-perf: " Chengwen Feng
@ 2023-11-10 10:01 ` Chengwen Feng
  2023-11-21  3:32   ` lihuisong (C)
  2023-11-10 10:01 ` [PATCH v2 14/16] app/testpmd: " Chengwen Feng
                   ` (4 subsequent siblings)
  17 siblings, 1 reply; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit, Cheng Jiang, Yuan Wang, Chenbo Xia, Jiayu Hu; +Cc: dev

Add verify strdup return value logic.

Fixes: 623dc9364dc6 ("app/dma-perf: introduce DMA performance test")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
 app/test-dma-perf/main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/app/test-dma-perf/main.c b/app/test-dma-perf/main.c
index e5bccc27da..339ee25eb5 100644
--- a/app/test-dma-perf/main.c
+++ b/app/test-dma-perf/main.c
@@ -206,6 +206,8 @@ parse_lcore_dma(struct test_configure *test_case, const char *value)
 		return -1;
 
 	input = strndup(value, strlen(value) + 1);
+	if (input == NULL)
+		return -1;
 	addrs = input;
 
 	while (*addrs == '\0')
-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 14/16] app/testpmd: verify strdup return value
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
                   ` (12 preceding siblings ...)
  2023-11-10 10:01 ` [PATCH v2 13/16] app/test-dma-perf: " Chengwen Feng
@ 2023-11-10 10:01 ` Chengwen Feng
  2023-11-10 11:44   ` Ivan Malov
  2023-11-21  3:32   ` lihuisong (C)
  2023-11-10 10:01 ` [PATCH v2 15/16] examples/qos_sched: fix memory leak when parse args Chengwen Feng
                   ` (3 subsequent siblings)
  17 siblings, 2 replies; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit, Aman Singh, Yuying Zhang, Wenxuan Wu,
	Yuan Wang, Andrew Rybchenko, Xuan Ding
  Cc: dev

Add verify strdup return value logic.

Fixes: 52e2e7edcf48 ("app/testpmd: add protocol-based buffer split")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
 app/test-pmd/cmdline.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 912bf3355c..904c04d466 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -3528,6 +3528,8 @@ parse_hdrs_list(const char *str, const char *item_name, unsigned int max_items,
 
 	nb_item = 0;
 	char *str2 = strdup(str);
+	if (str2 == NULL)
+		return nb_item;
 	cur = strtok_r(str2, ",", &tmp);
 	while (cur != NULL) {
 		parsed_items[nb_item] = get_ptype(cur);
-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 15/16] examples/qos_sched: fix memory leak when parse args
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
                   ` (13 preceding siblings ...)
  2023-11-10 10:01 ` [PATCH v2 14/16] app/testpmd: " Chengwen Feng
@ 2023-11-10 10:01 ` Chengwen Feng
  2023-11-10 10:01 ` [PATCH v2 16/16] examples/vhost: verify strdup return value Chengwen Feng
                   ` (2 subsequent siblings)
  17 siblings, 0 replies; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit, Cristian Dumitrescu, Slawomir Mrozowicz; +Cc: dev

Should free the memory which allocated by strdup().

Fixes: 035b6a4f4bba ("examples/qos_sched: fix out-of-bounds option parsing")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
 examples/qos_sched/args.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/examples/qos_sched/args.c b/examples/qos_sched/args.c
index e97273152a..8d61d3e454 100644
--- a/examples/qos_sched/args.c
+++ b/examples/qos_sched/args.c
@@ -103,8 +103,10 @@ app_parse_opt_vals(const char *conf_str, char separator, uint32_t n_vals, uint32
 
 	n_tokens = rte_strsplit(string, strnlen(string, 32), tokens, n_vals, separator);
 
-	if (n_tokens > MAX_OPT_VALUES)
+	if (n_tokens > MAX_OPT_VALUES) {
+		free(string);
 		return -1;
+	}
 
 	for (i = 0; i < n_tokens; i++)
 		opt_vals[i] = (uint32_t)atol(tokens[i]);
-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v2 16/16] examples/vhost: verify strdup return value
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
                   ` (14 preceding siblings ...)
  2023-11-10 10:01 ` [PATCH v2 15/16] examples/qos_sched: fix memory leak when parse args Chengwen Feng
@ 2023-11-10 10:01 ` Chengwen Feng
  2023-11-21  3:35   ` lihuisong (C)
  2024-01-15  2:57 ` [PATCH v2 00/16] " fengchengwen
  2024-02-18 16:01 ` Thomas Monjalon
  17 siblings, 1 reply; 29+ messages in thread
From: Chengwen Feng @ 2023-11-10 10:01 UTC (permalink / raw)
  To: thomas, ferruh.yigit, Maxime Coquelin, Chenbo Xia, Jiayu Hu, Sunil Pai G
  Cc: dev

Add verify strdup return value logic.

Fixes: 53d3f4778c1d ("vhost: integrate dmadev in asynchronous data-path")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
 examples/vhost/main.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/examples/vhost/main.c b/examples/vhost/main.c
index ce5c1efddf..3fc1b151d1 100644
--- a/examples/vhost/main.c
+++ b/examples/vhost/main.c
@@ -260,6 +260,9 @@ open_dma(const char *value)
 	char *dma_arg[RTE_MAX_VHOST_DEVICE];
 	int args_nr;
 
+	if (input == NULL)
+		return -1;
+
 	while (isblank(*addrs))
 		addrs++;
 	if (*addrs == '\0') {
-- 
2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH v2 14/16] app/testpmd: verify strdup return value
  2023-11-10 10:01 ` [PATCH v2 14/16] app/testpmd: " Chengwen Feng
@ 2023-11-10 11:44   ` Ivan Malov
  2023-11-21  3:32   ` lihuisong (C)
  1 sibling, 0 replies; 29+ messages in thread
From: Ivan Malov @ 2023-11-10 11:44 UTC (permalink / raw)
  To: Chengwen Feng
  Cc: thomas, ferruh.yigit, Aman Singh, Yuying Zhang, Wenxuan Wu,
	Yuan Wang, Andrew Rybchenko, Xuan Ding, dev

Hi,

On Fri, 10 Nov 2023, Chengwen Feng wrote:

> Add verify strdup return value logic.
>
> Fixes: 52e2e7edcf48 ("app/testpmd: add protocol-based buffer split")
> Cc: stable@dpdk.org
>
> Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
> ---
> app/test-pmd/cmdline.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
> index 912bf3355c..904c04d466 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -3528,6 +3528,8 @@ parse_hdrs_list(const char *str, const char *item_name, unsigned int max_items,
>
> 	nb_item = 0;
> 	char *str2 = strdup(str);
> +	if (str2 == NULL)
> +		return nb_item;
> 	cur = strtok_r(str2, ",", &tmp);
> 	while (cur != NULL) {
> 		parsed_items[nb_item] = get_ptype(cur);
> -- 
> 2.17.1
>
>

Acked-by: Ivan Malov <ivan.malov@arknetworks.am>

Thank you.

^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH v2 03/16] bus/fslmc: verify strdup return value
  2023-11-10 10:01 ` [PATCH v2 03/16] bus/fslmc: " Chengwen Feng
@ 2023-11-15  2:43   ` Sachin Saxena
  0 siblings, 0 replies; 29+ messages in thread
From: Sachin Saxena @ 2023-11-15  2:43 UTC (permalink / raw)
  To: Chengwen Feng, thomas, ferruh.yigit, Hemant Agrawal, Shreyansh Jain; +Cc: dev

Acked-by: Sachin Saxena <sachin.saxena@nxp.com>

> -----Original Message-----
> From: Chengwen Feng <fengchengwen@huawei.com>
> Sent: 10 November 2023 03:31 PM
> To: thomas@monjalon.net; ferruh.yigit@amd.com; Hemant Agrawal
> <hemant.agrawal@nxp.com>; Sachin Saxena <sachin.saxena@nxp.com>;
> Shreyansh Jain <shreyansh.jain@nxp.com>
> Cc: dev@dpdk.org
> Subject: [PATCH v2 03/16] bus/fslmc: verify strdup return value
> 
> Add verify strdup return value logic.
> 
> Fixes: e67a61614d0b ("bus/fslmc: support device iteration")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
> ---
>  drivers/bus/fslmc/fslmc_bus.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c
> index 57bfb5111a..89f0f329c0 100644
> --- a/drivers/bus/fslmc/fslmc_bus.c
> +++ b/drivers/bus/fslmc/fslmc_bus.c
> @@ -634,6 +634,10 @@ fslmc_bus_dev_iterate(const void *start, const char
> *str,
> 
>  	/* Now that name=device_name format is available, split */
>  	dup = strdup(str);
> +	if (dup == NULL) {
> +		DPAA2_BUS_DEBUG("Dup string (%s) failed!\n", str);
> +		return NULL;
> +	}
>  	dev_name = dup + strlen("name=");
> 
>  	if (start != NULL) {
> --
> 2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH v2 02/16] bus/dpaa: verify strdup return value
  2023-11-10 10:01 ` [PATCH v2 02/16] bus/dpaa: " Chengwen Feng
@ 2023-11-15  2:43   ` Sachin Saxena
  0 siblings, 0 replies; 29+ messages in thread
From: Sachin Saxena @ 2023-11-15  2:43 UTC (permalink / raw)
  To: Chengwen Feng, thomas, ferruh.yigit, Hemant Agrawal, Shreyansh Jain; +Cc: dev

Acked-by: Sachin Saxena <sachin.saxena@nxp.com>

> -----Original Message-----
> From: Chengwen Feng <fengchengwen@huawei.com>
> Sent: 10 November 2023 03:31 PM
> To: thomas@monjalon.net; ferruh.yigit@amd.com; Hemant Agrawal
> <hemant.agrawal@nxp.com>; Sachin Saxena <sachin.saxena@nxp.com>;
> Shreyansh Jain <shreyansh.jain@nxp.com>
> Cc: dev@dpdk.org
> Subject: [PATCH v2 02/16] bus/dpaa: verify strdup return value
> 
> Add verify strdup return value logic.
> 
> Fixes: e79df833d3f6 ("bus/dpaa: support hotplug ops")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
> ---
>  drivers/bus/dpaa/dpaa_bus.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c index
> e57159f5d8..a67f5c9ab5 100644
> --- a/drivers/bus/dpaa/dpaa_bus.c
> +++ b/drivers/bus/dpaa/dpaa_bus.c
> @@ -791,6 +791,10 @@ dpaa_bus_dev_iterate(const void *start, const char
> *str,
> 
>  	/* Now that name=device_name format is available, split */
>  	dup = strdup(str);
> +	if (dup == NULL) {
> +		DPAA_BUS_DEBUG("Dup string (%s) failed!\n", str);
> +		return NULL;
> +	}
>  	dev_name = dup + strlen("name=");
> 
>  	if (start != NULL) {
> --
> 2.17.1


^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH v2 14/16] app/testpmd: verify strdup return value
  2023-11-10 10:01 ` [PATCH v2 14/16] app/testpmd: " Chengwen Feng
  2023-11-10 11:44   ` Ivan Malov
@ 2023-11-21  3:32   ` lihuisong (C)
  1 sibling, 0 replies; 29+ messages in thread
From: lihuisong (C) @ 2023-11-21  3:32 UTC (permalink / raw)
  To: Chengwen Feng, thomas, ferruh.yigit, Aman Singh, Yuying Zhang,
	Wenxuan Wu, Yuan Wang, Andrew Rybchenko, Xuan Ding
  Cc: dev

Acked-by: Huisong Li <lihuisong@huawei.com>

在 2023/11/10 18:01, Chengwen Feng 写道:
> Add verify strdup return value logic.
>
> Fixes: 52e2e7edcf48 ("app/testpmd: add protocol-based buffer split")
> Cc: stable@dpdk.org
>
> Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
> ---
>   app/test-pmd/cmdline.c | 2 ++
>   1 file changed, 2 insertions(+)
>
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
> index 912bf3355c..904c04d466 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -3528,6 +3528,8 @@ parse_hdrs_list(const char *str, const char *item_name, unsigned int max_items,
>   
>   	nb_item = 0;
>   	char *str2 = strdup(str);
> +	if (str2 == NULL)
> +		return nb_item;
>   	cur = strtok_r(str2, ",", &tmp);
>   	while (cur != NULL) {
>   		parsed_items[nb_item] = get_ptype(cur);

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH v2 13/16] app/test-dma-perf: verify strdup return value
  2023-11-10 10:01 ` [PATCH v2 13/16] app/test-dma-perf: " Chengwen Feng
@ 2023-11-21  3:32   ` lihuisong (C)
  0 siblings, 0 replies; 29+ messages in thread
From: lihuisong (C) @ 2023-11-21  3:32 UTC (permalink / raw)
  To: Chengwen Feng, thomas, ferruh.yigit, Cheng Jiang, Yuan Wang,
	Chenbo Xia, Jiayu Hu
  Cc: dev

Acked-by: Huisong Li <lihuisong@huawei.com>

在 2023/11/10 18:01, Chengwen Feng 写道:
> Add verify strdup return value logic.
>
> Fixes: 623dc9364dc6 ("app/dma-perf: introduce DMA performance test")
> Cc: stable@dpdk.org
>
> Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
> ---
>   app/test-dma-perf/main.c | 2 ++
>   1 file changed, 2 insertions(+)
>
> diff --git a/app/test-dma-perf/main.c b/app/test-dma-perf/main.c
> index e5bccc27da..339ee25eb5 100644
> --- a/app/test-dma-perf/main.c
> +++ b/app/test-dma-perf/main.c
> @@ -206,6 +206,8 @@ parse_lcore_dma(struct test_configure *test_case, const char *value)
>   		return -1;
>   
>   	input = strndup(value, strlen(value) + 1);
> +	if (input == NULL)
> +		return -1;
>   	addrs = input;
>   
>   	while (*addrs == '\0')

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH v2 11/16] app/test: verify strdup return value
  2023-11-10 10:01 ` [PATCH v2 11/16] app/test: " Chengwen Feng
@ 2023-11-21  3:33   ` lihuisong (C)
  0 siblings, 0 replies; 29+ messages in thread
From: lihuisong (C) @ 2023-11-21  3:33 UTC (permalink / raw)
  To: Chengwen Feng, thomas, ferruh.yigit; +Cc: dev

Acked-by: Huisong Li <lihuisong@huawei.com>

在 2023/11/10 18:01, Chengwen Feng 写道:
> Add verify strdup return value logic.
>
> Fixes: af75078fece3 ("first public release")
> Cc: stable@dpdk.org
>
> Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
> ---
>   app/test/process.h | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/app/test/process.h b/app/test/process.h
> index af7bc3e0de..c576c42349 100644
> --- a/app/test/process.h
> +++ b/app/test/process.h
> @@ -59,8 +59,11 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
>   		return -1;
>   	else if (pid == 0) {
>   		/* make a copy of the arguments to be passed to exec */
> -		for (i = 0; i < numargs; i++)
> +		for (i = 0; i < numargs; i++) {
>   			argv_cpy[i] = strdup(argv[i]);
> +			if (argv_cpy[i] == NULL)
> +				rte_panic("Error dup args\n");
> +		}
>   		argv_cpy[i] = NULL;
>   		num = numargs;
>   

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH v2 16/16] examples/vhost: verify strdup return value
  2023-11-10 10:01 ` [PATCH v2 16/16] examples/vhost: verify strdup return value Chengwen Feng
@ 2023-11-21  3:35   ` lihuisong (C)
  0 siblings, 0 replies; 29+ messages in thread
From: lihuisong (C) @ 2023-11-21  3:35 UTC (permalink / raw)
  To: Chengwen Feng, thomas, ferruh.yigit, Maxime Coquelin, Chenbo Xia,
	Jiayu Hu, Sunil Pai G
  Cc: dev

Acked-by: Huisong Li <lihuisong@huawei.com>

在 2023/11/10 18:01, Chengwen Feng 写道:
> Add verify strdup return value logic.
>
> Fixes: 53d3f4778c1d ("vhost: integrate dmadev in asynchronous data-path")
> Cc: stable@dpdk.org
>
> Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
> ---
>   examples/vhost/main.c | 3 +++
>   1 file changed, 3 insertions(+)
>
> diff --git a/examples/vhost/main.c b/examples/vhost/main.c
> index ce5c1efddf..3fc1b151d1 100644
> --- a/examples/vhost/main.c
> +++ b/examples/vhost/main.c
> @@ -260,6 +260,9 @@ open_dma(const char *value)
>   	char *dma_arg[RTE_MAX_VHOST_DEVICE];
>   	int args_nr;
>   
> +	if (input == NULL)
> +		return -1;
> +
>   	while (isblank(*addrs))
>   		addrs++;
>   	if (*addrs == '\0') {

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH v2 04/16] bus/vdev: verify strdup return value
  2023-11-10 10:01 ` [PATCH v2 04/16] bus/vdev: " Chengwen Feng
@ 2023-11-21  3:36   ` lihuisong (C)
  0 siblings, 0 replies; 29+ messages in thread
From: lihuisong (C) @ 2023-11-21  3:36 UTC (permalink / raw)
  To: Chengwen Feng, thomas, ferruh.yigit, Gaetan Rivet, Xueming Li,
	Ray Kinsella
  Cc: dev

Acked-by: Huisong Li <lihuisong@huawei.com>

在 2023/11/10 18:01, Chengwen Feng 写道:
> Add verify strdup return value logic.
>
> Fixes: 64051bb1f144 ("devargs: unify scratch buffer storage")
> Cc: stable@dpdk.org
>
> Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
> ---
>   drivers/bus/vdev/vdev.c | 4 ++++
>   1 file changed, 4 insertions(+)
>
> diff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c
> index 7974b27295..05582f1727 100644
> --- a/drivers/bus/vdev/vdev.c
> +++ b/drivers/bus/vdev/vdev.c
> @@ -247,6 +247,10 @@ alloc_devargs(const char *name, const char *args)
>   		devargs->data = strdup(args);
>   	else
>   		devargs->data = strdup("");
> +	if (devargs->data == NULL) {
> +		free(devargs);
> +		return NULL;
> +	}
>   	devargs->args = devargs->data;
>   
>   	ret = strlcpy(devargs->name, name, sizeof(devargs->name));

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH v2 01/16] eal: verify strdup return value
  2023-11-10 10:01 ` [PATCH v2 01/16] eal: " Chengwen Feng
@ 2023-11-21  3:44   ` lihuisong (C)
  2024-02-18 13:50     ` Thomas Monjalon
  0 siblings, 1 reply; 29+ messages in thread
From: lihuisong (C) @ 2023-11-21  3:44 UTC (permalink / raw)
  To: Chengwen Feng, thomas, ferruh.yigit, Keith Wiles, Ciara Power,
	Bruce Richardson, Jeff Guo, Jianfeng Tan
  Cc: dev

在 2023/11/10 18:01, Chengwen Feng 写道:
> Add verify strdup() return value logic.
>
> Fixes: 293c53d8b23c ("eal: add telemetry callbacks")
> Fixes: 0d0f478d0483 ("eal/linux: add uevent parse and process")
> Cc: stable@dpdk.org
>
> Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
> ---
>   lib/eal/common/eal_common_options.c | 24 ++++++++++++++++++++++--
>   lib/eal/linux/eal_dev.c             |  3 +++
>   2 files changed, 25 insertions(+), 2 deletions(-)
>
> diff --git a/lib/eal/common/eal_common_options.c b/lib/eal/common/eal_common_options.c
> index a6d21f1cba..8b5a4632dd 100644
> --- a/lib/eal/common/eal_common_options.c
> +++ b/lib/eal/common/eal_common_options.c
> @@ -226,6 +226,8 @@ eal_save_args(int argc, char **argv)
>   		if (strcmp(argv[i], "--") == 0)
>   			break;
>   		eal_args[i] = strdup(argv[i]);
> +		if (eal_args[i] == NULL)
> +			goto error;
>   	}
>   	eal_args[i++] = NULL; /* always finish with NULL */
>   
> @@ -235,13 +237,31 @@ eal_save_args(int argc, char **argv)
>   
>   	eal_app_args = calloc(argc - i + 1, sizeof(*eal_args));
>   	if (eal_app_args == NULL)
> -		return -1;
> +		goto error;
>   
> -	for (j = 0; i < argc; j++, i++)
> +	for (j = 0; i < argc; j++, i++) {
>   		eal_app_args[j] = strdup(argv[i]);
> +		if (eal_app_args[j] == NULL)
> +			goto error;
> +	}
>   	eal_app_args[j] = NULL;
>   
>   	return 0;
> +
> +error:
> +	if (eal_app_args != NULL) {
> +		i = 0;
> +		while (eal_app_args[i] != NULL)
> +			free(eal_app_args[i++]);
> +		free(eal_app_args);
> +		eal_app_args = NULL;
> +	}
> +	i = 0;
> +	while (eal_args[i] != NULL)
> +		free(eal_args[i++]);
> +	free(eal_args);
> +	eal_args = NULL;
> +	return -1;
>   }
>   #endif
>   
> diff --git a/lib/eal/linux/eal_dev.c b/lib/eal/linux/eal_dev.c
> index ac76f6174d..df3cd6b39a 100644
> --- a/lib/eal/linux/eal_dev.c
> +++ b/lib/eal/linux/eal_dev.c
> @@ -181,7 +181,10 @@ dev_uev_parse(const char *buf, struct rte_dev_event *event, int length)
>   			buf += 14;
>   			i += 14;
>   			strlcpy(pci_slot_name, buf, sizeof(subsystem));
> +			free(event->devname);
It seems that above free for devname is unnecessary.
>   			event->devname = strdup(pci_slot_name);
> +			if (event->devname == NULL)
> +				return -1;
>   		}
>   		for (; i < length; i++) {
>   			if (*buf == '\0')

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH v2 00/16] verify strdup return value
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
                   ` (15 preceding siblings ...)
  2023-11-10 10:01 ` [PATCH v2 16/16] examples/vhost: verify strdup return value Chengwen Feng
@ 2024-01-15  2:57 ` fengchengwen
  2024-02-18 16:01 ` Thomas Monjalon
  17 siblings, 0 replies; 29+ messages in thread
From: fengchengwen @ 2024-01-15  2:57 UTC (permalink / raw)
  To: thomas, ferruh.yigit; +Cc: dev

Friendly ping.

On 2023/11/10 18:01, Chengwen Feng wrote:
> This patchset mainly fix the return value of strdup not checked which
> may lead to segment fault. It also include two commits which fix memory
> leak of strdup.
> 
> Chengwen Feng (16):
>   eal: verify strdup return value
>   bus/dpaa: verify strdup return value
>   bus/fslmc: verify strdup return value
>   bus/vdev: verify strdup return value
>   dma/idxd: verify strdup return value
>   event/cnxk: verify strdup return value
>   net/failsafe: fix memory leak when parse args
>   net/nfp: verify strdup return value
>   app/dumpcap: verify strdup return value
>   app/pdump: verify strdup return value
>   app/test: verify strdup return value
>   app/test-crypto-perf: verify strdup return value
>   app/test-dma-perf: verify strdup return value
>   app/testpmd: verify strdup return value
>   examples/qos_sched: fix memory leak when parse args
>   examples/vhost: verify strdup return value
> 
> ---
> v2: fix 0-day warning of app/dumpcap commit.
> 
>  app/dumpcap/main.c                           |  5 ++++
>  app/pdump/main.c                             |  3 +++
>  app/test-crypto-perf/cperf_options_parsing.c |  4 ++++
>  app/test-dma-perf/main.c                     |  2 ++
>  app/test-pmd/cmdline.c                       |  2 ++
>  app/test/process.h                           |  5 +++-
>  drivers/bus/dpaa/dpaa_bus.c                  |  4 ++++
>  drivers/bus/fslmc/fslmc_bus.c                |  4 ++++
>  drivers/bus/vdev/vdev.c                      |  4 ++++
>  drivers/dma/idxd/idxd_bus.c                  | 10 ++++++--
>  drivers/event/cnxk/cnxk_eventdev.c           |  3 +++
>  drivers/net/failsafe/failsafe_args.c         |  2 +-
>  drivers/net/nfp/nfp_ipsec.c                  |  5 ++++
>  examples/qos_sched/args.c                    |  4 +++-
>  examples/vhost/main.c                        |  3 +++
>  lib/eal/common/eal_common_options.c          | 24 ++++++++++++++++++--
>  lib/eal/linux/eal_dev.c                      |  3 +++
>  17 files changed, 80 insertions(+), 7 deletions(-)
> 

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH v2 01/16] eal: verify strdup return value
  2023-11-21  3:44   ` lihuisong (C)
@ 2024-02-18 13:50     ` Thomas Monjalon
  0 siblings, 0 replies; 29+ messages in thread
From: Thomas Monjalon @ 2024-02-18 13:50 UTC (permalink / raw)
  To: Chengwen Feng
  Cc: ferruh.yigit, Keith Wiles, Ciara Power, Bruce Richardson,
	Jeff Guo, Jianfeng Tan, dev, lihuisong (C)

21/11/2023 04:44, lihuisong (C):
> 在 2023/11/10 18:01, Chengwen Feng 写道:
> > --- a/lib/eal/linux/eal_dev.c
> > +++ b/lib/eal/linux/eal_dev.c
> > @@ -181,7 +181,10 @@ dev_uev_parse(const char *buf, struct rte_dev_event *event, int length)
> >   			buf += 14;
> >   			i += 14;
> >   			strlcpy(pci_slot_name, buf, sizeof(subsystem));
> > +			free(event->devname);
> It seems that above free for devname is unnecessary.

You didn't reply to this comment, so I will drop this free call.

> >   			event->devname = strdup(pci_slot_name);
> > +			if (event->devname == NULL)
> > +				return -1;




^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [PATCH v2 00/16] verify strdup return value
  2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
                   ` (16 preceding siblings ...)
  2024-01-15  2:57 ` [PATCH v2 00/16] " fengchengwen
@ 2024-02-18 16:01 ` Thomas Monjalon
  17 siblings, 0 replies; 29+ messages in thread
From: Thomas Monjalon @ 2024-02-18 16:01 UTC (permalink / raw)
  To: Chengwen Feng; +Cc: ferruh.yigit, dev

10/11/2023 11:01, Chengwen Feng:
> This patchset mainly fix the return value of strdup not checked which
> may lead to segment fault. It also include two commits which fix memory
> leak of strdup.
> 
> Chengwen Feng (16):
>   eal: verify strdup return value
>   bus/dpaa: verify strdup return value
>   bus/fslmc: verify strdup return value
>   bus/vdev: verify strdup return value
>   dma/idxd: verify strdup return value
>   event/cnxk: verify strdup return value
>   net/failsafe: fix memory leak when parse args
>   net/nfp: verify strdup return value
>   app/dumpcap: verify strdup return value
>   app/pdump: verify strdup return value
>   app/test: verify strdup return value
>   app/test-crypto-perf: verify strdup return value
>   app/test-dma-perf: verify strdup return value
>   app/testpmd: verify strdup return value
>   examples/qos_sched: fix memory leak when parse args
>   examples/vhost: verify strdup return value

Applied, with small change in EAL as suggested by Huisong, thanks.




^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2024-02-18 16:01 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-10 10:01 [PATCH v2 00/16] verify strdup return value Chengwen Feng
2023-11-10 10:01 ` [PATCH v2 01/16] eal: " Chengwen Feng
2023-11-21  3:44   ` lihuisong (C)
2024-02-18 13:50     ` Thomas Monjalon
2023-11-10 10:01 ` [PATCH v2 02/16] bus/dpaa: " Chengwen Feng
2023-11-15  2:43   ` Sachin Saxena
2023-11-10 10:01 ` [PATCH v2 03/16] bus/fslmc: " Chengwen Feng
2023-11-15  2:43   ` Sachin Saxena
2023-11-10 10:01 ` [PATCH v2 04/16] bus/vdev: " Chengwen Feng
2023-11-21  3:36   ` lihuisong (C)
2023-11-10 10:01 ` [PATCH v2 05/16] dma/idxd: " Chengwen Feng
2023-11-10 10:01 ` [PATCH v2 06/16] event/cnxk: " Chengwen Feng
2023-11-10 10:01 ` [PATCH v2 07/16] net/failsafe: fix memory leak when parse args Chengwen Feng
2023-11-10 10:01 ` [PATCH v2 08/16] net/nfp: verify strdup return value Chengwen Feng
2023-11-10 10:01 ` [PATCH v2 09/16] app/dumpcap: " Chengwen Feng
2023-11-10 10:01 ` [PATCH v2 10/16] app/pdump: " Chengwen Feng
2023-11-10 10:01 ` [PATCH v2 11/16] app/test: " Chengwen Feng
2023-11-21  3:33   ` lihuisong (C)
2023-11-10 10:01 ` [PATCH v2 12/16] app/test-crypto-perf: " Chengwen Feng
2023-11-10 10:01 ` [PATCH v2 13/16] app/test-dma-perf: " Chengwen Feng
2023-11-21  3:32   ` lihuisong (C)
2023-11-10 10:01 ` [PATCH v2 14/16] app/testpmd: " Chengwen Feng
2023-11-10 11:44   ` Ivan Malov
2023-11-21  3:32   ` lihuisong (C)
2023-11-10 10:01 ` [PATCH v2 15/16] examples/qos_sched: fix memory leak when parse args Chengwen Feng
2023-11-10 10:01 ` [PATCH v2 16/16] examples/vhost: verify strdup return value Chengwen Feng
2023-11-21  3:35   ` lihuisong (C)
2024-01-15  2:57 ` [PATCH v2 00/16] " fengchengwen
2024-02-18 16:01 ` Thomas Monjalon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).