From 37b765efbca81e4aa81fcb685e7810398e800e29 Mon Sep 17 00:00:00 2001 From: Chengwen Feng Date: Thu, 2 Mar 2023 07:50:05 +0000 Subject: compressdev: fix empty devargs parsing [ upstream commit bb27182482d61777de6a38b16a1d2c692c2c3f8b ] The rte_kvargs_process() was used to parse KV pairs, it also supports to parse 'only keys' (e.g. socket_id) type. And the callback function parameter 'value' is NULL when parsed 'only keys'. This patch fixes segment fault in rte_compressdev_pmd_parse_uint_arg() when parse input args with 'only keys' (e.g. socket_id). For a similar reason, this patch fixes rte_compressdev_pmd_parse_name_arg(). Fixes: ed7dd94f7f66 ("compressdev: add basic device management") Cc: stable@dpdk.org Signed-off-by: Chengwen Feng --- lib/compressdev/rte_compressdev_pmd.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/compressdev/rte_compressdev_pmd.c b/lib/compressdev/rte_compressdev_pmd.c index 7f500d76d4..6a11a396b7 100644 --- a/lib/compressdev/rte_compressdev_pmd.c +++ b/lib/compressdev/rte_compressdev_pmd.c @@ -20,6 +20,9 @@ rte_compressdev_pmd_parse_name_arg(const char *key __rte_unused, struct rte_compressdev_pmd_init_params *params = extra_args; int n; + if (value == NULL || extra_args == NULL) + return -EINVAL; + n = strlcpy(params->name, value, RTE_COMPRESSDEV_NAME_MAX_LEN); if (n >= RTE_COMPRESSDEV_NAME_MAX_LEN) return -EINVAL; @@ -37,6 +40,9 @@ rte_compressdev_pmd_parse_uint_arg(const char *key __rte_unused, int i; char *end; + if (value == NULL || extra_args == NULL) + return -EINVAL; + errno = 0; i = strtol(value, &end, 10); if (*end != 0 || errno != 0 || i < 0) -- 2.23.0