devargs: fix variadic parsing memory leak
authorGaetan Rivet <gaetan.rivet@6wind.com>
Wed, 17 Oct 2018 14:30:13 +0000 (16:30 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 25 Oct 2018 06:54:25 +0000 (08:54 +0200)
rte_devargs_parsef will leak memory each time it is called.
The device string must be freed.

Fixes: a23bc2c4e01b ("devargs: add non-variadic parsing function")
Cc: stable@dpdk.org
Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
lib/librte_eal/common/eal_common_devargs.c

index 69e9e32..c1b0609 100644 (file)
@@ -237,6 +237,7 @@ rte_devargs_parsef(struct rte_devargs *da, const char *format, ...)
        va_list ap;
        size_t len;
        char *dev;
+       int ret;
 
        if (da == NULL)
                return -EINVAL;
@@ -255,7 +256,10 @@ rte_devargs_parsef(struct rte_devargs *da, const char *format, ...)
        vsnprintf(dev, len + 1, format, ap);
        va_end(ap);
 
-       return rte_devargs_parse(da, dev);
+       ret = rte_devargs_parse(da, dev);
+
+       free(dev);
+       return ret;
 }
 
 int __rte_experimental