eal/linux: fix memory leak of logid
authorZiye Yang <ziye.yang@intel.com>
Wed, 12 Sep 2018 01:31:50 +0000 (09:31 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Sun, 28 Oct 2018 10:42:18 +0000 (11:42 +0100)
This patch is used to fix the memory leak issue of logid.
We use the ASAN test in SPDK when integrating DPDK and
find this memory leak issue.

Fixes: d8a2bc71dfc2 ("log: remove app path from syslog id")
Cc: stable@dpdk.org
Signed-off-by: Ziye Yang <ziye.yang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
lib/librte_eal/linuxapp/eal/eal.c

index 7b11375..67116ee 100644 (file)
@@ -825,7 +825,8 @@ rte_eal_init(int argc, char **argv)
        int i, fctret, ret;
        pthread_t thread_id;
        static rte_atomic32_t run_once = RTE_ATOMIC32_INIT(0);
-       const char *logid;
+       const char *p;
+       static char logid[PATH_MAX];
        char cpuset[RTE_CPU_AFFINITY_STR_LEN];
        char thread_name[RTE_MAX_THREAD_NAME_LEN];
 
@@ -842,9 +843,8 @@ rte_eal_init(int argc, char **argv)
                return -1;
        }
 
-       logid = strrchr(argv[0], '/');
-       logid = strdup(logid ? logid + 1: argv[0]);
-
+       p = strrchr(argv[0], '/');
+       strlcpy(logid, p ? p + 1 : argv[0], sizeof(logid));
        thread_id = pthread_self();
 
        eal_reset_internal_config(&internal_config);