util: fix mem leak of program path
Fixes: 759b940389
("util: Get program name based on path when possible")
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
This commit is contained in:
parent
991137144a
commit
5b10ddf358
|
@ -33,6 +33,15 @@
|
|||
#undef GET_PROGRAM_NAME
|
||||
|
||||
#if defined(__linux__) && defined(HAVE_PROGRAM_INVOCATION_NAME)
|
||||
|
||||
static char *path = NULL;
|
||||
|
||||
static void __freeProgramPath()
|
||||
{
|
||||
free(path);
|
||||
path = NULL;
|
||||
}
|
||||
|
||||
static const char *
|
||||
__getProgramName()
|
||||
{
|
||||
|
@ -45,14 +54,10 @@ __getProgramName()
|
|||
* Strip these arguments out by using the realpath only if it was
|
||||
* a prefix of the invocation name.
|
||||
*/
|
||||
static char *path;
|
||||
|
||||
if (!path)
|
||||
/* Note: realpath() allocates memory that we will keep around for
|
||||
* the lifetime of the app, and then leak as the app closes.
|
||||
* FIXME: we should find a way to clean this properly
|
||||
*/
|
||||
if (!path) {
|
||||
path = realpath("/proc/self/exe", NULL);
|
||||
atexit(__freeProgramPath);
|
||||
}
|
||||
|
||||
if (path && strncmp(path, program_invocation_name, strlen(path)) == 0) {
|
||||
/* This shouldn't be null because path is a a prefix,
|
||||
|
|
Loading…
Reference in New Issue