* ldap.cc (CYG_LDAP_TIMEOUT): Define as timeout value. Set to 30 secs

for now.  Use throughout.
	* uinfo.cc (colon_to_semicolon): New local function.
	(pwdgrp::fetch_account_from_windows): Convert all colons in AD gecos
	entry to commas.
This commit is contained in:
Corinna Vinschen 2014-06-18 17:41:52 +00:00
parent 59c45c4445
commit b1c17593f8
3 changed files with 27 additions and 6 deletions

View File

@ -1,3 +1,11 @@
2014-06-17 Corinna Vinschen <corinna@vinschen.de>
* ldap.cc (CYG_LDAP_TIMEOUT): Define as timeout value. Set to 30 secs
for now. Use throughout.
* uinfo.cc (colon_to_semicolon): New local function.
(pwdgrp::fetch_account_from_windows): Convert all colons in AD gecos
entry to commas.
2014-06-17 David Stacey <drstacey@tiscali.co.uk>
* libc/rexec.cc (cygwin_rexec): Make ahostbuf static to avoid returning

View File

@ -22,7 +22,9 @@ details. */
#include "dsgetdc.h"
#include "tls_pbuf.h"
static LDAP_TIMEVAL tv = { 3, 0 };
#define CYG_LDAP_TIMEOUT 30 /* seconds */
static LDAP_TIMEVAL tv = { CYG_LDAP_TIMEOUT, 0 };
static PWCHAR rootdse_attr[] =
{
@ -75,7 +77,7 @@ PWCHAR rfc2307_gid_attr[] =
bool
cyg_ldap::connect_ssl (PCWSTR domain)
{
ULONG ret, timelimit = 3; /* secs */
ULONG ret, timelimit = CYG_LDAP_TIMEOUT;
if (!(lh = ldap_sslinitW ((PWCHAR) domain, LDAP_SSL_PORT, 1)))
{
@ -98,7 +100,7 @@ cyg_ldap::connect_ssl (PCWSTR domain)
bool
cyg_ldap::connect_non_ssl (PCWSTR domain)
{
ULONG ret, timelimit = 3; /* secs */
ULONG ret, timelimit = CYG_LDAP_TIMEOUT;
if (!(lh = ldap_initW ((PWCHAR) domain, LDAP_PORT)))
{
@ -291,7 +293,7 @@ cyg_ldap::enumerate_ad_accounts (PCWSTR domain, bool group)
"(objectSid=*))";
srch_id = ldap_search_init_pageW (lh, rootdse, LDAP_SCOPE_SUBTREE,
(PWCHAR) filter, sid_attr, 0,
NULL, NULL, 3, 100, NULL);
NULL, NULL, CYG_LDAP_TIMEOUT, 100, NULL);
if (srch_id == NULL)
{
debug_printf ("ldap_search_init_pageW(%W,%W) error 0x%02x",

View File

@ -1162,6 +1162,16 @@ fetch_posix_offset (PDS_DOMAIN_TRUSTSW td, cyg_ldap *cldap)
return td->PosixOffset;
}
/* Helper function to replace colons with commas in pw_gecos field. */
static PWCHAR
colon_to_semicolon (PWCHAR str)
{
PWCHAR cp = str;
while ((cp = wcschr (cp, L':')) != NULL)
*cp++ = L';';
return str;
}
/* CV 2014-05-08: USER_INFO_24 is not yet defined in Mingw64, but will be in
the next release. For the time being, define the structure here with
another name which won't collide with the upcoming correct definition
@ -1597,8 +1607,9 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap)
if ((id_val = cldap->get_primary_gid ()) != ILLEGAL_GID)
gid = posix_offset + id_val;
if ((val = cldap->get_gecos ()))
gecos = wcscpy ((PWCHAR) alloca ((wcslen (val) + 1)
* sizeof (WCHAR)), val);
gecos = colon_to_semicolon (
wcscpy ((PWCHAR) alloca ((wcslen (val) + 1)
* sizeof (WCHAR)), val));
if ((val = cldap->get_home ()))
home = wcscpy ((PWCHAR) alloca ((wcslen (val) + 1)
* sizeof (WCHAR)), val);