aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2011-03-14 21:09:52 +0000
committerCorinna Vinschen <corinna@vinschen.de>2011-03-14 21:09:52 +0000
commit7d1675b3f809b4854d8acf09917d25bcc3d509de (patch)
tree541780dc2fa6ce47ffd259349fcfd32332be4940
parenta187a96cccd342203b47c7b436d3813e430935d7 (diff)
downloadnewlib-7d1675b3f809b4854d8acf09917d25bcc3d509de.zip
newlib-7d1675b3f809b4854d8acf09917d25bcc3d509de.tar.gz
newlib-7d1675b3f809b4854d8acf09917d25bcc3d509de.tar.bz2
* uinfo.cc (cygheap_user::env_domain): Use LookupAccountSidW and
convert user and domain to multibyte strings to make sure to use correct codeset.
-rw-r--r--winsup/cygwin/ChangeLog6
-rw-r--r--winsup/cygwin/uinfo.cc16
2 files changed, 14 insertions, 8 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 5badac9..52d0993 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,11 @@
2011-03-14 Corinna Vinschen <corinna@vinschen.de>
+ * uinfo.cc (cygheap_user::env_domain): Use LookupAccountSidW and
+ convert user and domain to multibyte strings to make sure to use
+ correct codeset.
+
+2011-03-14 Corinna Vinschen <corinna@vinschen.de>
+
* fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Only use
file id as inode number if it masters the isgood_inode check.
diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc
index 60db38e..4ada925 100644
--- a/winsup/cygwin/uinfo.cc
+++ b/winsup/cygwin/uinfo.cc
@@ -382,21 +382,21 @@ cygheap_user::env_domain (const char *name, size_t namelen)
if (pwinname && test_uid (pdomain, name, namelen))
return pdomain;
- char username[UNLEN + 1];
- DWORD ulen = sizeof (username);
- char userdomain[DNLEN + 1];
- DWORD dlen = sizeof (userdomain);
+ DWORD ulen = UNLEN + 1;
+ WCHAR username[ulen];
+ DWORD dlen = DNLEN + 1;
+ WCHAR userdomain[dlen];
SID_NAME_USE use;
cfree_and_set (pwinname, almost_null);
cfree_and_set (pdomain, almost_null);
- if (!LookupAccountSid (NULL, sid (), username, &ulen,
- userdomain, &dlen, &use))
+ if (!LookupAccountSidW (NULL, sid (), username, &ulen,
+ userdomain, &dlen, &use))
__seterrno ();
else
{
- pwinname = cstrdup (username);
- pdomain = cstrdup (userdomain);
+ sys_wcstombs_alloc (&pwinname, HEAP_STR, username);
+ sys_wcstombs_alloc (&pdomain, HEAP_STR, userdomain);
}
return pdomain;
}