From accdabadba740af6455ece7809bf9644d71124fa Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Thu, 5 Oct 2017 10:05:33 +0200 Subject: [PATCH] wldap32: Create version 3 contexts by default. Signed-off-by: Hans Leidekker Signed-off-by: Alexandre Julliard --- dlls/wldap32/init.c | 17 ++++++++++++++--- dlls/wldap32/tests/parse.c | 10 ++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/dlls/wldap32/init.c b/dlls/wldap32/init.c index 46a078aabaf..6b413f8437d 100644 --- a/dlls/wldap32/init.c +++ b/dlls/wldap32/init.c @@ -206,6 +206,17 @@ static char *urlify_hostnames( const char *scheme, char *hostnames, ULONG port ) WINE_DEFAULT_DEBUG_CHANNEL(wldap32); +#ifdef HAVE_LDAP +static LDAP *create_context( const char *url ) +{ + LDAP *ld; + int version = LDAP_VERSION3; + if (ldap_initialize( &ld, url ) != LDAP_SUCCESS) return NULL; + ldap_set_option( ld, LDAP_OPT_PROTOCOL_VERSION, &version ); + return ld; +} +#endif + /*********************************************************************** * cldap_openA (WLDAP32.@) * @@ -276,7 +287,7 @@ WLDAP32_LDAP * CDECL cldap_openW( PWCHAR hostname, ULONG portnumber ) url = urlify_hostnames( "cldap://", hostnameU, portnumber ); if (!url) goto exit; - ldap_initialize( &ld, url ); + ld = create_context( url ); exit: strfreeU( hostnameU ); @@ -385,7 +396,7 @@ WLDAP32_LDAP * CDECL ldap_initW( const PWCHAR hostname, ULONG portnumber ) url = urlify_hostnames( "ldap://", hostnameU, portnumber ); if (!url) goto exit; - ldap_initialize( &ld, url ); + ld = create_context( url ); exit: strfreeU( hostnameU ); @@ -467,7 +478,7 @@ WLDAP32_LDAP * CDECL ldap_openW( PWCHAR hostname, ULONG portnumber ) url = urlify_hostnames( "ldap://", hostnameU, portnumber ); if (!url) goto exit; - ldap_initialize( &ld, url ); + ld = create_context( url ); exit: strfreeU( hostnameU ); diff --git a/dlls/wldap32/tests/parse.c b/dlls/wldap32/tests/parse.c index 5c84929c34c..c4c97e11577 100644 --- a/dlls/wldap32/tests/parse.c +++ b/dlls/wldap32/tests/parse.c @@ -123,6 +123,15 @@ static void test_ldap_set_optionW( LDAP *ld ) ok( !ret, "ldap_set_optionW failed 0x%08x\n", ret ); } +static void test_ldap_get_optionW( LDAP *ld ) +{ + ULONG ret, version; + + ret = ldap_get_optionW( ld, LDAP_OPT_PROTOCOL_VERSION, &version ); + ok( !ret, "ldap_get_optionW failed 0x%08x\n", ret ); + ok( version == LDAP_VERSION3, "got %u\n", version ); +} + START_TEST (parse) { LDAP *ld; @@ -132,6 +141,7 @@ START_TEST (parse) test_ldap_parse_sort_control( ld ); test_ldap_search_extW( ld ); + test_ldap_get_optionW( ld ); test_ldap_set_optionW( ld ); ldap_unbind( ld ); }