]> granicus.if.org Git - php/commitdiff
Fixed ldap_parse_exop_whoami and ldap_parse_exop_passwd and added test for them
authorCôme Chilliet <mcmic@php.net>
Wed, 21 Jun 2017 10:14:02 +0000 (12:14 +0200)
committerCôme Chilliet <mcmic@php.net>
Mon, 3 Jul 2017 08:58:13 +0000 (10:58 +0200)
ext/ldap/ldap.c
ext/ldap/tests/ldap_exop_passwd.phpt
ext/ldap/tests/ldap_exop_whoami.phpt [new file with mode: 0644]

index 4fe4961b30da68424e82d4bc21b15db15b7769bc..50f0fb24c374230f03ebef2a135a36c1a55d9f02 100644 (file)
@@ -2634,7 +2634,7 @@ PHP_FUNCTION(ldap_parse_exop_passwd)
        struct berval lnewpasswd;
        int rc, myargcount = ZEND_NUM_ARGS();
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrz", &link, &result, &newpasswd) != SUCCESS) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrz/", &link, &result, &newpasswd) != SUCCESS) {
                WRONG_PARAM_COUNT;
        }
 
@@ -3898,6 +3898,27 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_whoami, 0, 0, 2)
 ZEND_END_ARG_INFO()
 #endif
 
+#ifdef HAVE_LDAP_PARSE_EXTENDED_RESULT
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop, 0, 0, 4)
+       ZEND_ARG_INFO(0, link)
+       ZEND_ARG_INFO(0, result)
+       ZEND_ARG_INFO(1, retoid)
+       ZEND_ARG_INFO(1, retdata)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop_passwd, 0, 0, 3)
+       ZEND_ARG_INFO(0, link)
+       ZEND_ARG_INFO(0, result)
+       ZEND_ARG_INFO(1, newpasswd)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop_whoami, 0, 0, 3)
+       ZEND_ARG_INFO(0, link)
+       ZEND_ARG_INFO(0, result)
+       ZEND_ARG_INFO(1, authzid)
+ZEND_END_ARG_INFO()
+#endif
+
 #ifdef HAVE_LDAP_REFRESH
 ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_refresh, 0, 0, 4)
        ZEND_ARG_INFO(0, link)
@@ -3971,12 +3992,14 @@ const zend_function_entry ldap_functions[] = {
        PHP_FE(ldap_start_tls,                                                          arginfo_ldap_resource)
 #endif
 #ifdef HAVE_LDAP_EXTENDED_OPERATION_S
-       PHP_FE(ldap_exop,
-       arginfo_ldap_exop)
-       PHP_FE(ldap_exop_passwd,
-       arginfo_ldap_exop_passwd)
-       PHP_FE(ldap_exop_whoami,
-       arginfo_ldap_exop_whoami)
+       PHP_FE(ldap_exop,                                                                       arginfo_ldap_exop)
+       PHP_FE(ldap_exop_passwd,                                                        arginfo_ldap_exop_passwd)
+       PHP_FE(ldap_exop_whoami,                                                        arginfo_ldap_exop_whoami)
+#endif
+#ifdef HAVE_LDAP_PARSE_EXTENDED_RESULT
+       PHP_FE(ldap_parse_exop,                                                         arginfo_ldap_parse_exop)
+       PHP_FE(ldap_parse_exop_passwd,                                          arginfo_ldap_parse_exop_passwd)
+       PHP_FE(ldap_parse_exop_whoami,                                          arginfo_ldap_parse_exop_whoami)
 #endif
 #ifdef HAVE_LDAP_REFRESH
        PHP_FE(ldap_refresh,
index 5ab926eb4a31fc6fa7b979563d5dfdd546e75640..2762f6e231d5f2cb7a2f62fea8dd63587e1bfed7 100644 (file)
@@ -20,7 +20,10 @@ var_dump(
   $genpw,
   test_bind($host, $port, "cn=userA,$base", $genpw, $protocol_version),
   ldap_exop_passwd($link, "cn=userA,$base", $genpw, "newPassword"),
-  test_bind($host, $port, "cn=userA,$base", "newPassword", $protocol_version)
+  test_bind($host, $port, "cn=userA,$base", "newPassword", $protocol_version),
+  $r = ldap_exop_passwd($link, "cn=userA,$base", "newPassword", ""),
+  ldap_parse_exop_passwd($link, $r, $result),
+  $result
 );
 ?>
 ===DONE===
@@ -38,4 +41,7 @@ string(%d) "%s"
 bool(true)
 bool(true)
 bool(true)
+resource(%d) of type (ldap result)
+bool(true)
+string(%d) "%s"
 ===DONE===
diff --git a/ext/ldap/tests/ldap_exop_whoami.phpt b/ext/ldap/tests/ldap_exop_whoami.phpt
new file mode 100644 (file)
index 0000000..73b7c13
--- /dev/null
@@ -0,0 +1,39 @@
+--TEST--
+ldap_exop_whoami() - EXOP whoami operation
+--CREDITS--
+Côme Chilliet <mcmic@php.net>
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+<?php require_once('skipifbindfailure.inc'); ?>
+--FILE--
+<?php
+require "connect.inc";
+
+$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
+insert_dummy_data($link, $base);
+
+// ldap_exop_whoami(resource link [, string authzid])
+var_dump(
+  ldap_exop_whoami($link, $authzid),
+  $authzid,
+  $r = ldap_exop_whoami($link),
+  ldap_parse_exop_whoami($link, $r, $result),
+  $result
+);
+?>
+===DONE===
+--CLEAN--
+<?php
+require "connect.inc";
+
+$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
+
+remove_dummy_data($link, $base);
+?>
+--EXPECTF--
+bool(true)
+string(%d) "dn:%s"
+resource(%d) of type (ldap result)
+bool(true)
+string(%d) "dn:%s"
+===DONE===