(get_default_username): a better way of guessing when the user has
su:ed git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@6452 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -51,28 +51,35 @@ RCSID("$Id$");
|
|||||||
const char *
|
const char *
|
||||||
get_default_username (void)
|
get_default_username (void)
|
||||||
{
|
{
|
||||||
const char *p;
|
const char *user;
|
||||||
|
|
||||||
|
user = getenv ("USER");
|
||||||
|
if (user == NULL)
|
||||||
|
user = getenv ("LOGNAME");
|
||||||
|
if (user == NULL)
|
||||||
|
user = getenv ("USERNAME");
|
||||||
|
|
||||||
p = getenv ("USER");
|
|
||||||
if (p != NULL)
|
|
||||||
return p;
|
|
||||||
p = getenv ("LOGNAME");
|
|
||||||
if (p != NULL)
|
|
||||||
return p;
|
|
||||||
p = getenv ("USERNAME");
|
|
||||||
if (p != NULL)
|
|
||||||
return p;
|
|
||||||
#if defined(HAVE_GETLOGIN) && !defined(POSIX_GETLOGIN)
|
#if defined(HAVE_GETLOGIN) && !defined(POSIX_GETLOGIN)
|
||||||
p = (const char *)getlogin ();
|
if (user == NULL) {
|
||||||
if (p != NULL)
|
user = (const char *)getlogin ();
|
||||||
return p;
|
if (user != NULL)
|
||||||
|
return user;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_PWD_H
|
#ifdef HAVE_PWD_H
|
||||||
{
|
{
|
||||||
struct passwd *pwd = k_getpwuid (getuid ());
|
uid_t uid = getuid ();
|
||||||
|
struct passwd *pwd;
|
||||||
|
|
||||||
|
if (user != NULL) {
|
||||||
|
pwd = k_getpwnam (user);
|
||||||
|
if (pwd != NULL && pwd->pw_uid == uid)
|
||||||
|
return user;
|
||||||
|
}
|
||||||
|
pwd = k_getpwuid (uid);
|
||||||
if (pwd != NULL)
|
if (pwd != NULL)
|
||||||
return pwd->pw_name;
|
return pwd->pw_name;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return NULL;
|
return user;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user