diff options
-rw-r--r-- | winsup/utils/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/utils/passwd.c | 9 |
2 files changed, 11 insertions, 3 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index 55b707fb0..2dc2c2349 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -1,5 +1,10 @@ 2009-03-22 Corinna Vinschen <corinna@vinschen.de> + * passwd.c (main): Always get logonserver from environment and + use when fetching user info for caller. + +2009-03-22 Corinna Vinschen <corinna@vinschen.de> + * ldd.cc: Fix compiler warning. * passwd.c: Use mbstowcs instead of MultiByteToWideChar throughout. diff --git a/winsup/utils/passwd.c b/winsup/utils/passwd.c index 68b3e44f4..1f04fb63c 100644 --- a/winsup/utils/passwd.c +++ b/winsup/utils/passwd.c @@ -349,6 +349,7 @@ main (int argc, char **argv) int Sopt = 0; int Ropt = 0; PUSER_INFO_3 ui, li; + LPWSTR my_server = NULL; LPWSTR server = NULL; prog_name = strrchr (argv[0], '/'); @@ -517,12 +518,14 @@ main (int argc, char **argv) return 0; } - if (!server && (logonserver = getenv ("LOGONSERVER"))) + if ((logonserver = getenv ("LOGONSERVER"))) { size_t len = mbstowcs (NULL, logonserver, 0); if (len > 0 && len != (size_t) -1) - mbstowcs (server = alloca ((len + 1) * sizeof (wchar_t)), + mbstowcs (my_server = alloca ((len + 1) * sizeof (wchar_t)), logonserver, len + 1); + if (!server) + server = my_server; } if (Larg >= 0 || xarg >= 0 || narg >= 0 || iarg >= 0) @@ -534,7 +537,7 @@ main (int argc, char **argv) strcpy (user, optind >= argc ? getlogin () : argv[optind]); - li = GetPW (getlogin (), 0, server); + li = GetPW (getlogin (), 0, my_server); if (! li) return 1; |