Skip to content

Commit 28530b2

Browse files
author
Côme Chilliet
committed
Fixed ldap_parse_exop_whoami and ldap_parse_exop_passwd and added test for them
1 parent fdafd68 commit 28530b2

File tree

3 files changed

+76
-8
lines changed

3 files changed

+76
-8
lines changed

ext/ldap/ldap.c

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2634,7 +2634,7 @@ PHP_FUNCTION(ldap_parse_exop_passwd)
26342634
struct berval lnewpasswd;
26352635
int rc, myargcount = ZEND_NUM_ARGS();
26362636

2637-
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrz", &link, &result, &newpasswd) != SUCCESS) {
2637+
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrz/", &link, &result, &newpasswd) != SUCCESS) {
26382638
WRONG_PARAM_COUNT;
26392639
}
26402640

@@ -3898,6 +3898,27 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_whoami, 0, 0, 2)
38983898
ZEND_END_ARG_INFO()
38993899
#endif
39003900

3901+
#ifdef HAVE_LDAP_PARSE_EXTENDED_RESULT
3902+
ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop, 0, 0, 4)
3903+
ZEND_ARG_INFO(0, link)
3904+
ZEND_ARG_INFO(0, result)
3905+
ZEND_ARG_INFO(1, retoid)
3906+
ZEND_ARG_INFO(1, retdata)
3907+
ZEND_END_ARG_INFO()
3908+
3909+
ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop_passwd, 0, 0, 3)
3910+
ZEND_ARG_INFO(0, link)
3911+
ZEND_ARG_INFO(0, result)
3912+
ZEND_ARG_INFO(1, newpasswd)
3913+
ZEND_END_ARG_INFO()
3914+
3915+
ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop_whoami, 0, 0, 3)
3916+
ZEND_ARG_INFO(0, link)
3917+
ZEND_ARG_INFO(0, result)
3918+
ZEND_ARG_INFO(1, authzid)
3919+
ZEND_END_ARG_INFO()
3920+
#endif
3921+
39013922
#ifdef HAVE_LDAP_REFRESH
39023923
ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_refresh, 0, 0, 4)
39033924
ZEND_ARG_INFO(0, link)
@@ -3971,12 +3992,14 @@ const zend_function_entry ldap_functions[] = {
39713992
PHP_FE(ldap_start_tls, arginfo_ldap_resource)
39723993
#endif
39733994
#ifdef HAVE_LDAP_EXTENDED_OPERATION_S
3974-
PHP_FE(ldap_exop,
3975-
arginfo_ldap_exop)
3976-
PHP_FE(ldap_exop_passwd,
3977-
arginfo_ldap_exop_passwd)
3978-
PHP_FE(ldap_exop_whoami,
3979-
arginfo_ldap_exop_whoami)
3995+
PHP_FE(ldap_exop, arginfo_ldap_exop)
3996+
PHP_FE(ldap_exop_passwd, arginfo_ldap_exop_passwd)
3997+
PHP_FE(ldap_exop_whoami, arginfo_ldap_exop_whoami)
3998+
#endif
3999+
#ifdef HAVE_LDAP_PARSE_EXTENDED_RESULT
4000+
PHP_FE(ldap_parse_exop, arginfo_ldap_parse_exop)
4001+
PHP_FE(ldap_parse_exop_passwd, arginfo_ldap_parse_exop_passwd)
4002+
PHP_FE(ldap_parse_exop_whoami, arginfo_ldap_parse_exop_whoami)
39804003
#endif
39814004
#ifdef HAVE_LDAP_REFRESH
39824005
PHP_FE(ldap_refresh,

ext/ldap/tests/ldap_exop_passwd.phpt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ var_dump(
2020
$genpw,
2121
test_bind($host, $port, "cn=userA,$base", $genpw, $protocol_version),
2222
ldap_exop_passwd($link, "cn=userA,$base", $genpw, "newPassword"),
23-
test_bind($host, $port, "cn=userA,$base", "newPassword", $protocol_version)
23+
test_bind($host, $port, "cn=userA,$base", "newPassword", $protocol_version),
24+
$r = ldap_exop_passwd($link, "cn=userA,$base", "newPassword", ""),
25+
ldap_parse_exop_passwd($link, $r, $result),
26+
$result
2427
);
2528
?>
2629
===DONE===
@@ -38,4 +41,7 @@ string(%d) "%s"
3841
bool(true)
3942
bool(true)
4043
bool(true)
44+
resource(%d) of type (ldap result)
45+
bool(true)
46+
string(%d) "%s"
4147
===DONE===

ext/ldap/tests/ldap_exop_whoami.phpt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
--TEST--
2+
ldap_exop_whoami() - EXOP whoami operation
3+
--CREDITS--
4+
Côme Chilliet <mcmic@php.net>
5+
--SKIPIF--
6+
<?php require_once('skipif.inc'); ?>
7+
<?php require_once('skipifbindfailure.inc'); ?>
8+
--FILE--
9+
<?php
10+
require "connect.inc";
11+
12+
$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
13+
insert_dummy_data($link, $base);
14+
15+
// ldap_exop_whoami(resource link [, string authzid])
16+
var_dump(
17+
ldap_exop_whoami($link, $authzid),
18+
$authzid,
19+
$r = ldap_exop_whoami($link),
20+
ldap_parse_exop_whoami($link, $r, $result),
21+
$result
22+
);
23+
?>
24+
===DONE===
25+
--CLEAN--
26+
<?php
27+
require "connect.inc";
28+
29+
$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
30+
31+
remove_dummy_data($link, $base);
32+
?>
33+
--EXPECTF--
34+
bool(true)
35+
string(%d) "dn:%s"
36+
resource(%d) of type (ldap result)
37+
bool(true)
38+
string(%d) "dn:%s"
39+
===DONE===

0 commit comments

Comments
 (0)