summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/ldap/ldap.c45
-rw-r--r--ext/ldap/tests/ldap_exop_passwd.phpt4
-rw-r--r--ext/ldap/tests/ldap_exop_whoami.phpt4
3 files changed, 21 insertions, 32 deletions
diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c
index b2d35148d9..8e0b908417 100644
--- a/ext/ldap/ldap.c
+++ b/ext/ldap/ldap.c
@@ -3314,16 +3314,16 @@ PHP_FUNCTION(ldap_exop)
#endif
#ifdef HAVE_LDAP_PASSWD_S
-/* {{{ proto bool ldap_exop_passwd(resource link [, string user [, string oldpw [, string newpw [, string genpasswd ]]]])
+/* {{{ proto bool|string ldap_exop_passwd(resource link [, string user [, string oldpw [, string newpw ]]])
Passwd modify extended operation */
PHP_FUNCTION(ldap_exop_passwd)
{
- zval *link, *user, *newpw, *oldpw, *newpasswd;
- struct berval luser, loldpw, lnewpw, lnewpasswd;
+ zval *link, *user, *newpw, *oldpw;
+ struct berval luser, loldpw, lnewpw, lgenpasswd;
ldap_linkdata *ld;
int rc, myargcount = ZEND_NUM_ARGS();
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|zzzz/", &link, &user, &oldpw, &newpw, &newpasswd) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|zzz", &link, &user, &oldpw, &newpw) == FAILURE) {
WRONG_PARAM_COUNT;
}
@@ -3336,7 +3336,6 @@ PHP_FUNCTION(ldap_exop_passwd)
lnewpw.bv_len = 0;
switch (myargcount) {
- case 5:
case 4:
convert_to_string_ex(newpw);
lnewpw.bv_val = Z_STRVAL_P(newpw);
@@ -3357,39 +3356,38 @@ PHP_FUNCTION(ldap_exop_passwd)
rc = ldap_passwd_s(ld->link, &luser,
loldpw.bv_len > 0 ? &loldpw : NULL,
lnewpw.bv_len > 0 ? &lnewpw : NULL,
- &lnewpasswd, NULL, NULL);
+ &lgenpasswd, NULL, NULL);
if (rc != LDAP_SUCCESS ) {
php_error_docref(NULL, E_WARNING, "Passwd modify extended operation failed: %s (%d)", ldap_err2string(rc), rc);
RETURN_FALSE;
}
- if (myargcount > 4) {
- zval_dtor(newpasswd);
- if (lnewpasswd.bv_len == 0) {
- ZVAL_EMPTY_STRING(newpasswd);
+ if (lnewpw.bv_len == 0) {
+ if (lgenpasswd.bv_len == 0) {
+ RETVAL_EMPTY_STRING();
} else {
- ZVAL_STRINGL(newpasswd, lnewpasswd.bv_val, lnewpasswd.bv_len);
+ RETVAL_STRINGL(lgenpasswd.bv_val, lgenpasswd.bv_len);
}
+ } else {
+ RETURN_TRUE;
}
- ldap_memfree(lnewpasswd.bv_val);
-
- RETURN_TRUE;
+ ldap_memfree(lgenpasswd.bv_val);
}
/* }}} */
#endif
#ifdef HAVE_LDAP_WHOAMI_S
-/* {{{ proto bool ldap_exop_whoami(resource link , string authzid)
+/* {{{ proto bool|string ldap_exop_whoami(resource link)
Whoami extended operation */
PHP_FUNCTION(ldap_exop_whoami)
{
- zval *link, *authzid;
+ zval *link;
struct berval *lauthzid;
ldap_linkdata *ld;
int rc, myargcount = ZEND_NUM_ARGS();
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "rz/", &link, &authzid) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &link) == FAILURE) {
WRONG_PARAM_COUNT;
}
@@ -3404,16 +3402,13 @@ PHP_FUNCTION(ldap_exop_whoami)
RETURN_FALSE;
}
- zval_dtor(authzid);
if (lauthzid == NULL) {
- ZVAL_EMPTY_STRING(authzid);
+ RETVAL_EMPTY_STRING();
} else {
- ZVAL_STRINGL(authzid, lauthzid->bv_val, lauthzid->bv_len);
+ RETVAL_STRINGL(lauthzid->bv_val, lauthzid->bv_len);
ldap_memfree(lauthzid->bv_val);
ldap_memfree(lauthzid);
}
-
- RETURN_TRUE;
}
/* }}} */
#endif
@@ -3708,19 +3703,17 @@ ZEND_END_ARG_INFO()
#endif
#ifdef HAVE_LDAP_PASSWD_S
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_passwd, 0, 0, 5)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_passwd, 0, 0, 4)
ZEND_ARG_INFO(0, link)
ZEND_ARG_INFO(0, user)
ZEND_ARG_INFO(0, oldpw)
ZEND_ARG_INFO(0, newpw)
- ZEND_ARG_INFO(1, newpasswd)
ZEND_END_ARG_INFO()
#endif
#ifdef HAVE_LDAP_WHOAMI_S
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_whoami, 0, 0, 2)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_whoami, 0, 0, 1)
ZEND_ARG_INFO(0, link)
- ZEND_ARG_INFO(1, authzid)
ZEND_END_ARG_INFO()
#endif
diff --git a/ext/ldap/tests/ldap_exop_passwd.phpt b/ext/ldap/tests/ldap_exop_passwd.phpt
index 5ab926eb4a..e282678c49 100644
--- a/ext/ldap/tests/ldap_exop_passwd.phpt
+++ b/ext/ldap/tests/ldap_exop_passwd.phpt
@@ -16,8 +16,7 @@ insert_dummy_data($link, $base);
// and optionally returns the NEW password if none was passed.
// ldap_exop_passwd(resource link [, string user [, string oldpw [, string newpw [, string newpasswd ]]]])
var_dump(
- ldap_exop_passwd($link, "cn=userA,$base", "oops", "", $genpw),
- $genpw,
+ $genpw = ldap_exop_passwd($link, "cn=userA,$base", "oops", ""),
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)
@@ -33,7 +32,6 @@ $link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
remove_dummy_data($link, $base);
?>
--EXPECTF--
-bool(true)
string(%d) "%s"
bool(true)
bool(true)
diff --git a/ext/ldap/tests/ldap_exop_whoami.phpt b/ext/ldap/tests/ldap_exop_whoami.phpt
index 4bccda3423..368038f3bd 100644
--- a/ext/ldap/tests/ldap_exop_whoami.phpt
+++ b/ext/ldap/tests/ldap_exop_whoami.phpt
@@ -14,8 +14,7 @@ insert_dummy_data($link, $base);
// ldap_exop_whoami(resource link [, string authzid])
var_dump(
- ldap_exop_whoami($link, $authzid),
- $authzid
+ ldap_exop_whoami($link)
);
?>
===DONE===
@@ -28,6 +27,5 @@ $link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
remove_dummy_data($link, $base);
?>
--EXPECTF--
-bool(true)
string(%d) "dn:%s"
===DONE===