Merge pull request #245 from DariuszOstolski/issue211
Fix username lookup in case of missing USER environment variable
This commit is contained in:
commit
ebf81ac476
@ -84,6 +84,7 @@ check_include_file (syslog.h HAVE_SYSLOG_H)
|
||||
check_include_file (ucontext.h HAVE_UCONTEXT_H)
|
||||
check_include_file (unistd.h HAVE_UNISTD_H)
|
||||
check_include_file (unwind.h HAVE_UNWIND_H)
|
||||
check_include_file (pwd.h HAVE_PWD_H)
|
||||
|
||||
check_include_file_cxx ("ext/hash_map" HAVE_EXT_HASH_MAP)
|
||||
check_include_file_cxx ("ext/hash_set" HAVE_EXT_HASH_SET)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -47,6 +47,12 @@
|
||||
#ifdef HAVE_SYSLOG_H
|
||||
# include <syslog.h>
|
||||
#endif
|
||||
#ifdef HAVE_UNISTD_H
|
||||
# include <unistd.h> // For geteuid.
|
||||
#endif
|
||||
#ifdef HAVE_PWD_H
|
||||
# include <pwd.h>
|
||||
#endif
|
||||
|
||||
#include "base/googleinit.h"
|
||||
|
||||
@ -299,8 +305,26 @@ static void MyUserNameInitializer() {
|
||||
if (user != NULL) {
|
||||
g_my_user_name = user;
|
||||
} else {
|
||||
#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());
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user