Skip to content

Commit 9dde13a

Browse files
committed
Fix php#17776 LDAP_OPT_X_TLS_REQUIRE_CERT can't be overridden
1 parent 8cbc0c5 commit 9dde13a

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

ext/ldap/ldap.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -987,6 +987,17 @@ PHP_FUNCTION(ldap_connect)
987987
snprintf( url, urllen, "ldap://%s:" ZEND_LONG_FMT, host, port );
988988
}
989989

990+
#ifdef LDAP_OPT_X_TLS_NEWCTX
991+
if (url && !strncmp(url, "ldaps:", 6)) {
992+
int val = 0;
993+
994+
/* ensure all pending TLS options are applied in a new context */
995+
if (ldap_set_option(NULL, LDAP_OPT_X_TLS_NEWCTX, &val) != LDAP_OPT_SUCCESS) {
996+
php_error_docref(NULL, E_WARNING, "Could not create new security context");
997+
}
998+
}
999+
#endif
1000+
9901001
#ifdef LDAP_API_FEATURE_X_OPENLDAP
9911002
/* ldap_init() is deprecated, use ldap_initialize() instead.
9921003
*/
@@ -3696,6 +3707,17 @@ PHP_FUNCTION(ldap_start_tls)
36963707
ld = Z_LDAP_LINK_P(link);
36973708
VERIFY_LDAP_LINK_CONNECTED(ld);
36983709

3710+
#ifdef LDAP_OPT_X_TLS_NEWCTX
3711+
{
3712+
int val = 0;
3713+
3714+
/* ensure all pending TLS options are applied in a new context */
3715+
if (ldap_set_option(ld->link, LDAP_OPT_X_TLS_NEWCTX, &val) != LDAP_OPT_SUCCESS) {
3716+
php_error_docref(NULL, E_WARNING, "Could not create new security context");
3717+
}
3718+
}
3719+
#endif
3720+
36993721
if (((rc = ldap_set_option(ld->link, LDAP_OPT_PROTOCOL_VERSION, &protocol)) != LDAP_SUCCESS) ||
37003722
((rc = ldap_start_tls_s(ld->link, NULL, NULL)) != LDAP_SUCCESS)
37013723
) {

0 commit comments

Comments
 (0)