Skip to content

Commit

Permalink
Deprecate ldap_connect with two parameters (#5177)
Browse files Browse the repository at this point in the history
* Deprecate ldap_connect with two parameters

ldap_connect should be called with an LDAP-URI as parameter and not with
2 parameters as that allows much more flexibility like differentiating
between ldap and ldaps or setting multiple ldap-servers.

This change requires one to add null as second parameter in case the
underlying library is Oracle and one wants to add wallet-details.

* Modify all ldap-tests to use ldap_connect right

All tests are using ldap_connect now with an URI and not with host and
port as two separarte parameters.

* Verify deprecation of ldap_connect w/h 2 params

This adds a test to verify that calling ldap_connect with 2 parameters
triggers a deprecation notice

* Remove empty test

`ldap_control_paged_result()` is removed as of PHP 8.0.0, so this test
needs to be removed as well.

Co-authored-by: Christoph M. Becker <cmbecker69@gmx.de>
Co-authored-by: Tim Düsterhus <timwolla@googlemail.com>
  • Loading branch information
3 people committed Jul 10, 2023
1 parent 3d944a3 commit 69a8b63
Show file tree
Hide file tree
Showing 101 changed files with 195 additions and 178 deletions.
4 changes: 4 additions & 0 deletions ext/ldap/ldap.c
Expand Up @@ -926,6 +926,10 @@ PHP_FUNCTION(ldap_connect)
ldap_linkdata *ld;
LDAP *ldap = NULL;

if (ZEND_NUM_ARGS() == 2) {
zend_error(E_DEPRECATED, "Usage of ldap_connect with two arguments is deprecated");
}

#ifdef HAVE_ORALDAP
if (ZEND_NUM_ARGS() == 3 || ZEND_NUM_ARGS() == 4) {
WRONG_PARAM_COUNT;
Expand Down
4 changes: 2 additions & 2 deletions ext/ldap/tests/bug48441.phpt
Expand Up @@ -12,7 +12,7 @@ require_once('skipifbindfailure.inc');
<?php
include "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
insert_dummy_data($link, $base);

$dn = "$base";
Expand All @@ -35,7 +35,7 @@ var_dump(
<?php
include "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
remove_dummy_data($link, $base);
?>
--EXPECTF--
Expand Down
2 changes: 1 addition & 1 deletion ext/ldap/tests/bug73933.phpt
Expand Up @@ -5,7 +5,7 @@ ldap
--FILE--
<?php
/* We are assuming 3333 is not connectable */
$ldap = ldap_connect('127.0.0.1', 3333);
$ldap = ldap_connect('ldap://127.0.0.1:3333');

ldap_mod_replace($ldap, '', array(
'lockoutTime' => array(0),
Expand Down
4 changes: 2 additions & 2 deletions ext/ldap/tests/bug77958.phpt
Expand Up @@ -10,7 +10,7 @@ ldap
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
insert_dummy_data($link, $base);

$mods = array(
Expand All @@ -37,7 +37,7 @@ var_dump(
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);

remove_dummy_data($link, $base);
?>
Expand Down
9 changes: 5 additions & 4 deletions ext/ldap/tests/connect.inc
Expand Up @@ -7,6 +7,7 @@ Change the LDAP_TEST_* environment values if you want to use another configurati

$host = getenv("LDAP_TEST_HOST") ?: "localhost";
$port = getenv("LDAP_TEST_PORT") ?: 389;
$uri = getenv("LDAP_TEST_URI") ?: 'ldap://localhost:389';
$base = getenv("LDAP_TEST_BASE") ?: "dc=my-domain,dc=com";
$user = getenv("LDAP_TEST_USER") ?: "cn=Manager,$base";
$passwd = getenv("LDAP_TEST_PASSWD") ?: "secret";
Expand All @@ -15,15 +16,15 @@ $sasl_passwd = getenv("LDAP_TEST_SASL_PASSWD") ?: "oops";
$protocol_version = getenv("LDAP_TEST_OPT_PROTOCOL_VERSION") ?: 3;
$skip_on_bind_failure = getenv("LDAP_TEST_SKIP_BIND_FAILURE") ?: true;

function ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version) {
$link = ldap_connect($host, $port);
function ldap_connect_and_bind($uri, $user, $passwd, $protocol_version) {
$link = ldap_connect($uri);
ldap_set_option($link, LDAP_OPT_PROTOCOL_VERSION, $protocol_version);
ldap_bind($link, $user, $passwd);
return $link;
}

function test_bind($host, $port, $user, $passwd, $protocol_version) {
$link = ldap_connect($host, $port);
function test_bind($uri, $user, $passwd, $protocol_version) {
$link = ldap_connect($uri);
ldap_set_option($link, LDAP_OPT_PROTOCOL_VERSION, $protocol_version);
return ldap_bind($link, $user, $passwd);
}
Expand Down
4 changes: 2 additions & 2 deletions ext/ldap/tests/ldap_add_basic.phpt
Expand Up @@ -11,7 +11,7 @@ ldap
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);

var_dump(
ldap_add($link, "dc=my-domain,$base", array(
Expand All @@ -32,7 +32,7 @@ var_dump(
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);

ldap_delete($link, "dc=my-domain,$base");
?>
Expand Down
4 changes: 2 additions & 2 deletions ext/ldap/tests/ldap_add_error.phpt
Expand Up @@ -11,7 +11,7 @@ ldap
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);

var_dump(ldap_add($link, "$base", array()));

Expand Down Expand Up @@ -86,7 +86,7 @@ var_dump(
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);

ldap_delete($link, "dc=my-domain,$base");
?>
Expand Down
4 changes: 2 additions & 2 deletions ext/ldap/tests/ldap_add_ext.phpt
Expand Up @@ -14,7 +14,7 @@ skipifunsupportedcontrol(LDAP_CONTROL_POST_READ);
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);

var_dump(
$result = ldap_add_ext($link, "o=test_ldap_add_ext,$base", array(
Expand All @@ -37,7 +37,7 @@ var_dump(
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);

ldap_delete($link, "o=test_ldap_add_ext,$base");
?>
Expand Down
2 changes: 1 addition & 1 deletion ext/ldap/tests/ldap_bind_basic.phpt
Expand Up @@ -11,7 +11,7 @@ ldap
<?php
require "connect.inc";

$link = ldap_connect($host, $port);
$link = ldap_connect($uri);
ldap_set_option($link, LDAP_OPT_PROTOCOL_VERSION, $protocol_version);
var_dump(ldap_bind($link));
?>
Expand Down
2 changes: 1 addition & 1 deletion ext/ldap/tests/ldap_bind_error.phpt
Expand Up @@ -11,7 +11,7 @@ ldap
<?php
require "connect.inc";

$link = ldap_connect($host, $port);
$link = ldap_connect($uri);
ldap_set_option($link, LDAP_OPT_PROTOCOL_VERSION, $protocol_version);

// Invalid password
Expand Down
2 changes: 1 addition & 1 deletion ext/ldap/tests/ldap_bind_ext.phpt
Expand Up @@ -14,7 +14,7 @@ skipifunsupportedcontrol(LDAP_CONTROL_PASSWORDPOLICYREQUEST);
<?php
require "connect.inc";

$link = ldap_connect($host, $port);
$link = ldap_connect($uri);
ldap_set_option($link, LDAP_OPT_PROTOCOL_VERSION, $protocol_version);

var_dump(
Expand Down
2 changes: 1 addition & 1 deletion ext/ldap/tests/ldap_bind_variation.phpt
Expand Up @@ -11,7 +11,7 @@ ldap
<?php
require "connect.inc";

$link = ldap_connect($host, $port);
$link = ldap_connect($uri);
ldap_set_option($link, LDAP_OPT_PROTOCOL_VERSION, $protocol_version);
var_dump(ldap_bind($link, $user, $passwd));
?>
Expand Down
4 changes: 2 additions & 2 deletions ext/ldap/tests/ldap_compare_basic.phpt
Expand Up @@ -11,7 +11,7 @@ ldap
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
insert_dummy_data($link, $base);
var_dump(
ldap_compare($link, "cn=userA,$base", "sn", "testSN1"),
Expand All @@ -22,7 +22,7 @@ var_dump(
<?php
include "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
remove_dummy_data($link, $base);
?>
--EXPECT--
Expand Down
4 changes: 2 additions & 2 deletions ext/ldap/tests/ldap_compare_error.phpt
Expand Up @@ -11,7 +11,7 @@ ldap
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
insert_dummy_data($link, $base);

var_dump(
Expand All @@ -24,7 +24,7 @@ var_dump(
<?php
include "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
remove_dummy_data($link, $base);
?>
--EXPECTF--
Expand Down
2 changes: 1 addition & 1 deletion ext/ldap/tests/ldap_connect_basic.phpt
Expand Up @@ -9,7 +9,7 @@ ldap
<?php
require "connect.inc";

$link = ldap_connect($host, $port);
$link = ldap_connect($uri);
var_dump($link);
?>
--EXPECTF--
Expand Down
4 changes: 2 additions & 2 deletions ext/ldap/tests/ldap_connect_error.phpt
Expand Up @@ -15,8 +15,8 @@ require "connect.inc";
var_dump(ldap_connect("ldap://$host:$port/$base"));

$links = array();
$links[0] = ldap_connect($host, $port);
$links[1] = ldap_connect($host, $port);
$links[0] = ldap_connect($uri);
$links[1] = ldap_connect($uri);
?>
--EXPECTF--
Warning: ldap_connect(): Could not create session handle: %s in %s on line %d
Expand Down
4 changes: 2 additions & 2 deletions ext/ldap/tests/ldap_controls.phpt
Expand Up @@ -15,7 +15,7 @@ skipifunsupportedcontrol(LDAP_CONTROL_VALUESRETURNFILTER);
<?php
include "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
insert_dummy_data($link, $base);

/* Test assertion control */
Expand Down Expand Up @@ -55,7 +55,7 @@ var_dump(
<?php
include "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
remove_dummy_data($link, $base);
?>
--EXPECTF--
Expand Down
4 changes: 2 additions & 2 deletions ext/ldap/tests/ldap_count_entries_basic.phpt
Expand Up @@ -11,7 +11,7 @@ ldap
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
insert_dummy_data($link, $base);
$result = ldap_search($link, "$base", "(objectclass=person)");
var_dump(ldap_count_entries($link, $result));
Expand All @@ -20,7 +20,7 @@ var_dump(ldap_count_entries($link, $result));
<?php
include "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
remove_dummy_data($link, $base);
?>
--EXPECT--
Expand Down
4 changes: 2 additions & 2 deletions ext/ldap/tests/ldap_count_references_basic.phpt
Expand Up @@ -7,7 +7,7 @@ ldap
--FILE--
<?php
require "connect.inc";
$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
insert_dummy_data($link, $base);
ldap_add($link, "cn=userref,$base", array(
"objectClass" => array("extensibleObject", "referral"),
Expand All @@ -27,7 +27,7 @@ var_dump(ldap_count_references($link, $result));
<?php
include "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
// Referral can only be removed with Manage DSA IT Control
ldap_delete($link, "cn=userref,$base", [['oid' => LDAP_CONTROL_MANAGEDSAIT, 'iscritical' => TRUE]]);
ldap_delete($link, "cn=userref2,$base", [['oid' => LDAP_CONTROL_MANAGEDSAIT, 'iscritical' => TRUE]]);
Expand Down
4 changes: 2 additions & 2 deletions ext/ldap/tests/ldap_delete_basic.phpt
Expand Up @@ -11,7 +11,7 @@ ldap
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
ldap_add($link, "dc=my-domain,$base", array(
"objectClass" => array(
"top",
Expand All @@ -30,7 +30,7 @@ var_dump(
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);

@ldap_delete($link, "dc=my-domain,$base");
?>
Expand Down
4 changes: 2 additions & 2 deletions ext/ldap/tests/ldap_delete_error.phpt
Expand Up @@ -11,7 +11,7 @@ ldap
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);

// Invalid DN
var_dump(
Expand All @@ -31,7 +31,7 @@ var_dump(
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
?>
--EXPECTF--
Warning: ldap_delete(): Delete: Invalid DN syntax in %s on line %d
Expand Down
4 changes: 2 additions & 2 deletions ext/ldap/tests/ldap_delete_ext.phpt
Expand Up @@ -14,7 +14,7 @@ skipifunsupportedcontrol(LDAP_CONTROL_PRE_READ);
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
ldap_add($link, "dc=my-domain,$base", array(
"objectClass" => array(
"top",
Expand All @@ -39,7 +39,7 @@ var_dump(
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);

@ldap_delete($link, "dc=my-domain,$base");
?>
Expand Down
12 changes: 12 additions & 0 deletions ext/ldap/tests/ldap_deprectate_connect_with_two_parameters.phpt
@@ -0,0 +1,12 @@
--TEST--
ldap_connect() - With two parameters is marked as deprecated
--EXTENSIONS--
ldap
--FILE--
<?php
require "connect.inc";

ldap_connect('foobar', 123);
?>
--EXPECTF--
Deprecated: Usage of ldap_connect with two arguments is deprecated in %s on line %d
2 changes: 1 addition & 1 deletion ext/ldap/tests/ldap_errno_basic.phpt
Expand Up @@ -11,7 +11,7 @@ ldap
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
@ldap_add($link, "badDN $base", array(
"objectClass" => array(
"top",
Expand Down
2 changes: 1 addition & 1 deletion ext/ldap/tests/ldap_error_basic.phpt
Expand Up @@ -11,7 +11,7 @@ ldap
<?php
require "connect.inc";

$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
$link = ldap_connect_and_bind($uri, $user, $passwd, $protocol_version);
@ldap_add($link, "badDN $base", array(
"objectClass" => array(
"top",
Expand Down

0 comments on commit 69a8b63

Please sign in to comment.