From 7f2739856bdccc5cb38595e9b4cf912e8661ebff Mon Sep 17 00:00:00 2001 From: David Goulet Date: Thu, 10 Jul 2014 16:02:02 -0400 Subject: [PATCH] Fix: add a get HOME dir fallback to getpwuid If the $HOME or $LTTNG_HOME is not defined, fallback on getpwuid(3) of the process uid. Fixes #815 Signed-off-by: David Goulet --- src/common/utils.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/common/utils.c b/src/common/utils.c index 936580029..f02ff1ec8 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -820,11 +820,28 @@ LTTNG_HIDDEN char *utils_get_home_dir(void) { char *val = NULL; + struct passwd *pwd; + val = getenv(DEFAULT_LTTNG_HOME_ENV_VAR); if (val != NULL) { - return val; + goto end; + } + val = getenv(DEFAULT_LTTNG_FALLBACK_HOME_ENV_VAR); + if (val != NULL) { + goto end; } - return getenv(DEFAULT_LTTNG_FALLBACK_HOME_ENV_VAR); + + /* Fallback on the password file entry. */ + pwd = getpwuid(getuid()); + if (!pwd) { + goto end; + } + val = pwd->pw_dir; + + DBG3("Home directory is '%s'", val); + +end: + return val; } /* -- 2.34.1