diff options
author | Andreas Schneider <asn@samba.org> | 2021-11-10 12:06:51 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2021-11-10 19:11:53 +0000 |
commit | c28be4067463e582e378df402f812e510883d606 (patch) | |
tree | f8d8c0dcaa56b6bc0a1265376a49ddd3de44a20f /auth | |
parent | 711d01ff205fe536688598bbdb7d1766c17ece2a (diff) | |
download | samba-c28be4067463e582e378df402f812e510883d606.tar.gz |
auth:creds: Guess the username first via getpwuid(my_id)
If we have a container, we often don't have USER or LOGNAME set.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14883
Tested-by: Anoop C S <anoopcs@samba.org>
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date(master): Wed Nov 10 19:11:53 UTC 2021 on sn-devel-184
Diffstat (limited to 'auth')
-rw-r--r-- | auth/credentials/credentials.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/auth/credentials/credentials.c b/auth/credentials/credentials.c index 542edbd43e2..67644e806e4 100644 --- a/auth/credentials/credentials.c +++ b/auth/credentials/credentials.c @@ -30,6 +30,7 @@ #include "tevent.h" #include "param/param.h" #include "system/filesys.h" +#include "system/passwd.h" /** * Create a new credentials structure @@ -1159,6 +1160,7 @@ _PUBLIC_ bool cli_credentials_guess(struct cli_credentials *cred, { const char *error_string; const char *env = NULL; + struct passwd *pwd = NULL; bool ok; if (lp_ctx != NULL) { @@ -1168,6 +1170,17 @@ _PUBLIC_ bool cli_credentials_guess(struct cli_credentials *cred, } } + pwd = getpwuid(getuid()); + if (pwd != NULL) { + size_t len = strlen(pwd->pw_name); + + if (len > 0 && len <= 1024) { + (void)cli_credentials_parse_string(cred, + pwd->pw_name, + CRED_GUESS_ENV); + } + } + env = getenv("LOGNAME"); if (env != NULL) { size_t len = strlen(env); |