From: Ivan Malov Date: Fri, 4 May 2018 10:31:54 +0000 (+0100) Subject: eal: fix mempool ops name parsing X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=33b318179162e4be81720d010fa6466fe03c2a84;p=dpdk.git 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 --- 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: