From: Dariusz Ostolski Date: Tue, 19 Sep 2017 20:23:53 +0000 (+0200) Subject: Fix username lookup in case of missing USER environment variable X-Git-Tag: accepted/tizen/5.0/unified/20181102.024921~24^2~1 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fupstream%2Fglog.git;a=commitdiff_plain;h=2d3cf2681d4bd4019af368d549395fe2c00a0154 Fix username lookup in case of missing USER environment variable --- diff --git a/configure.ac b/configure.ac index 69711b7..6a19cd0 100644 --- a/configure.ac +++ b/configure.ac @@ -31,6 +31,7 @@ AC_HEADER_STDC AC_CHECK_HEADER(stdint.h, ac_cv_have_stdint_h=1, ac_cv_have_stdint_h=0) AC_CHECK_HEADER(sys/types.h, ac_cv_have_systypes_h=1, ac_cv_have_systypes_h=0) AC_CHECK_HEADER(inttypes.h, ac_cv_have_inttypes_h=1, ac_cv_have_inttypes_h=0) +AC_CHECK_HEADER(pwd.h, ac_cv_have_pwd_h=1, ac_cv_have_pwd_h=0) AC_CHECK_HEADERS(unistd.h, ac_cv_have_unistd_h=1, ac_cv_have_unistd_h=0) AC_CHECK_HEADERS(syscall.h) AC_CHECK_HEADERS(sys/syscall.h) diff --git a/src/utilities.cc b/src/utilities.cc index 9d5b123..1a3c7e1 100644 --- a/src/utilities.cc +++ b/src/utilities.cc @@ -47,6 +47,12 @@ #ifdef HAVE_SYSLOG_H # include #endif +#ifdef HAVE_UNISTD_H +# include // For geteuid. +#endif +#ifdef HAVE_PWD_H +# include +#endif #include "base/googleinit.h" @@ -299,8 +305,26 @@ static void MyUserNameInitializer() { if (user != NULL) { g_my_user_name = user; } else { - g_my_user_name = "invalid-user"; +#if defined(HAVE_PWD_H) && defined(HAVE_UNISTD_H) + uid_t uid; + struct passwd pwd; + struct passwd*result = NULL; + char buffer[1024] = {'\0'}; + uid = geteuid(); + int pwuid_res = getpwuid_r(uid, &pwd, buffer, sizeof (buffer), &result); + if(pwuid_res == 0) { + g_my_user_name = pwd.pw_name; + } + else { + snprintf(buffer, sizeof(buffer), "uid%d", uid); + g_my_user_name = buffer; + } +#endif + if(g_my_user_name.empty()) { + g_my_user_name = "invalid-user"; + } } + } REGISTER_MODULE_INITIALIZER(utilities, MyUserNameInitializer());