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: a103a97e71 ("eal: allow user to override default mempool driver")
Cc: stable@dpdk.org

Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
This commit is contained in:
Ivan Malov 2018-05-04 11:31:54 +01:00 committed by Thomas Monjalon
parent 7d3c4fb6de
commit 33b3181791
2 changed files with 4 additions and 2 deletions

View File

@ -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);

View File

@ -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: