wldap32: Skip over the TLS certificate check if not using TLS.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54772
This commit is contained in:
Alex Henrie 2023-04-03 23:42:27 -06:00 committed by Alexandre Julliard
parent b5ba4baa51
commit 12b5da66e9
2 changed files with 12 additions and 10 deletions

View file

@ -271,17 +271,17 @@ ULONG CDECL WLDAP32_ldap_connect( LDAP *ld, struct l_timeval *timeout )
if ((ret = ldap_get_option( CTX(ld), LDAP_OPT_X_TLS_SSL_CTX, &tls_context )))
return map_error( ret );
if (QueryContextAttributesA( tls_context, SECPKG_ATTR_REMOTE_CERT_CONTEXT, &cert ) != SEC_E_OK)
return WLDAP32_LDAP_SERVER_DOWN;
if (cert_callback( ld, &cert ))
if (QueryContextAttributesA( tls_context, SECPKG_ATTR_REMOTE_CERT_CONTEXT, &cert ) == SEC_E_OK)
{
TRACE( "accepted\n" );
}
else
{
WARN( "rejected\n" );
return WLDAP32_LDAP_SERVER_DOWN;
if (cert_callback( ld, &cert ))
{
TRACE( "accepted\n" );
}
else
{
WARN( "rejected\n" );
return WLDAP32_LDAP_SERVER_DOWN;
}
}
}

View file

@ -586,6 +586,8 @@ static void test_opt_server_certificate(void)
ok( !ret, "ldap_set_optionA should succeed, got %#lx\n", ret );
ret = ldap_set_optionA( ld, LDAP_OPT_SERVER_CERTIFICATE, &verify_certificate );
ok( !ret, "ldap_set_optionA should succeed, got %#lx\n", ret );
ret = ldap_connect( ld, NULL );
ok( !ret, "ldap_connect should succeed, got %#lx\n", ret );
ret = ldap_start_tls_sA( ld, NULL, NULL, NULL, NULL );
ok( ret == LDAP_LOCAL_ERROR, "ldap_start_tls_sA should fail, got %#lx\n", ret );
ldap_unbind( ld );