summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/release/3.04
-rw-r--r--winsup/cygwin/uinfo.cc10
2 files changed, 14 insertions, 0 deletions
diff --git a/winsup/cygwin/release/3.0 b/winsup/cygwin/release/3.0
index da357558d..444e71a94 100644
--- a/winsup/cygwin/release/3.0
+++ b/winsup/cygwin/release/3.0
@@ -109,3 +109,7 @@ Bug Fixes
- Fix O_APPEND handling on files when calling non-Cygwin applications
Addresses: https://cygwin.com/ml/cygwin/2019-02/msg00081.html
+
+- Fix case correctness of passwd/group entries fetched via getpwnam
+ or getgrnam.
+ Addresses: https://cygwin.com/ml/cygwin/2019-02/msg00109.html
diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc
index 22cae5e04..4a5fa3470 100644
--- a/winsup/cygwin/uinfo.cc
+++ b/winsup/cygwin/uinfo.cc
@@ -2046,6 +2046,16 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap)
/* We can skip the backslash in the rest of this function. */
if (p)
name = p + 1;
+ /* Reverse lookup name from sid to make sure the username in
+ our passwd/group data is written exactly as in the user DB. */
+ nlen = UNLEN + 1;
+ dlen = DNLEN + 1;
+ ret = LookupAccountSidW (NULL, sid, name, &nlen, dom, &dlen, &acc_type);
+ if (!ret)
+ {
+ system_printf ("LookupAccountNameW (%W), %E", name);
+ return NULL;
+ }
/* Last but not least, some validity checks on the name style. */
if (!fq_name)
{