From 98a352b2a7b5191ad25070639926abdceb12f82d Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Fri, 16 Jan 2015 14:16:12 +0100 Subject: [PATCH] sysdb: Use the current user's homedir rather than the SysDB user. --- src/tools/sysdb/main.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/tools/sysdb/main.c b/src/tools/sysdb/main.c index 357ef34..e5f20ea 100644 --- a/src/tools/sysdb/main.c +++ b/src/tools/sysdb/main.c @@ -82,8 +82,10 @@ #endif static const char * -get_homedir(const char *username) +get_homedir(void) { + char *username = sdb_get_current_user(); + struct passwd pw_entry; struct passwd *result = NULL; @@ -93,16 +95,22 @@ get_homedir(const char *username) int status; - memset(&pw_entry, 0, sizeof(pw_entry)); - status = getpwnam_r(username, &pw_entry, buf, sizeof(buf), &result); + if (username) { + memset(&pw_entry, 0, sizeof(pw_entry)); + status = getpwnam_r(username, &pw_entry, buf, sizeof(buf), &result); + } + else + status = -1; if (status || (! result)) { char errbuf[1024]; sdb_log(SDB_LOG_WARNING, "Failed to determine home directory " "for user %s: %s", username, sdb_strerror(errno, errbuf, sizeof(errbuf))); + free(username); return NULL; } + free(username); return result->pw_dir; } /* get_homedir */ @@ -299,7 +307,7 @@ main(int argc, char **argv) using_history(); - if ((homedir = get_homedir(input.user))) { + if ((homedir = get_homedir())) { snprintf(hist_file, sizeof(hist_file) - 1, "%s/.sysdb_history", homedir); hist_file[sizeof(hist_file) - 1] = '\0'; -- 2.30.2