From 33b318179162e4be81720d010fa6466fe03c2a84 Mon Sep 17 00:00:00 2001 From: Ivan Malov Date: Fri, 4 May 2018 11:31:54 +0100 Subject: [PATCH] eal: fix mempool ops name parsing The code aimed to pick and remember the value of mempool ops name from EAL command line arguments does not copy the string and remembers the pointer provided by getopt_long() directly. The latter could be clobbered later and result in reading wrong mbuf pool ops name by rte_mempool library. Typically, this flaw could be avoided by using strdup() to remember the string value of the option. Fixes: a103a97e7191 ("eal: allow user to override default mempool driver") Cc: stable@dpdk.org Signed-off-by: Ivan Malov Signed-off-by: Andrew Rybchenko Acked-by: Santosh Shukla --- lib/librte_eal/bsdapp/eal/eal.c | 3 ++- lib/librte_eal/linuxapp/eal/eal.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c index a63f11f313..3ba328ad6e 100644 --- a/lib/librte_eal/bsdapp/eal/eal.c +++ b/lib/librte_eal/bsdapp/eal/eal.c @@ -380,7 +380,8 @@ eal_parse_args(int argc, char **argv) switch (opt) { case OPT_MBUF_POOL_OPS_NAME_NUM: - internal_config.user_mbuf_pool_ops_name = optarg; + internal_config.user_mbuf_pool_ops_name = + strdup(optarg); break; case 'h': eal_usage(prgname); diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c index e2c0bd6494..34d94121a3 100644 --- a/lib/librte_eal/linuxapp/eal/eal.c +++ b/lib/librte_eal/linuxapp/eal/eal.c @@ -593,7 +593,8 @@ eal_parse_args(int argc, char **argv) break; case OPT_MBUF_POOL_OPS_NAME_NUM: - internal_config.user_mbuf_pool_ops_name = optarg; + internal_config.user_mbuf_pool_ops_name = + strdup(optarg); break; default: