Skip to content

Commit 3207747

Browse files
author
Côme Chilliet
committed
Changed API to avoid using passing result by reference
See discussion on internals ML
1 parent 13062ef commit 3207747

File tree

3 files changed

+21
-32
lines changed

3 files changed

+21
-32
lines changed

ext/ldap/ldap.c

Lines changed: 19 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3314,16 +3314,16 @@ PHP_FUNCTION(ldap_exop)
33143314
#endif
33153315

33163316
#ifdef HAVE_LDAP_PASSWD_S
3317-
/* {{{ proto bool ldap_exop_passwd(resource link [, string user [, string oldpw [, string newpw [, string genpasswd ]]]])
3317+
/* {{{ proto bool|string ldap_exop_passwd(resource link [, string user [, string oldpw [, string newpw ]]])
33183318
Passwd modify extended operation */
33193319
PHP_FUNCTION(ldap_exop_passwd)
33203320
{
3321-
zval *link, *user, *newpw, *oldpw, *newpasswd;
3322-
struct berval luser, loldpw, lnewpw, lnewpasswd;
3321+
zval *link, *user, *newpw, *oldpw;
3322+
struct berval luser, loldpw, lnewpw, lgenpasswd;
33233323
ldap_linkdata *ld;
33243324
int rc, myargcount = ZEND_NUM_ARGS();
33253325

3326-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|zzzz/", &link, &user, &oldpw, &newpw, &newpasswd) == FAILURE) {
3326+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|zzz", &link, &user, &oldpw, &newpw) == FAILURE) {
33273327
WRONG_PARAM_COUNT;
33283328
}
33293329

@@ -3336,7 +3336,6 @@ PHP_FUNCTION(ldap_exop_passwd)
33363336
lnewpw.bv_len = 0;
33373337

33383338
switch (myargcount) {
3339-
case 5:
33403339
case 4:
33413340
convert_to_string_ex(newpw);
33423341
lnewpw.bv_val = Z_STRVAL_P(newpw);
@@ -3357,39 +3356,38 @@ PHP_FUNCTION(ldap_exop_passwd)
33573356
rc = ldap_passwd_s(ld->link, &luser,
33583357
loldpw.bv_len > 0 ? &loldpw : NULL,
33593358
lnewpw.bv_len > 0 ? &lnewpw : NULL,
3360-
&lnewpasswd, NULL, NULL);
3359+
&lgenpasswd, NULL, NULL);
33613360
if (rc != LDAP_SUCCESS ) {
33623361
php_error_docref(NULL, E_WARNING, "Passwd modify extended operation failed: %s (%d)", ldap_err2string(rc), rc);
33633362
RETURN_FALSE;
33643363
}
33653364

3366-
if (myargcount > 4) {
3367-
zval_dtor(newpasswd);
3368-
if (lnewpasswd.bv_len == 0) {
3369-
ZVAL_EMPTY_STRING(newpasswd);
3365+
if (lnewpw.bv_len == 0) {
3366+
if (lgenpasswd.bv_len == 0) {
3367+
RETVAL_EMPTY_STRING();
33703368
} else {
3371-
ZVAL_STRINGL(newpasswd, lnewpasswd.bv_val, lnewpasswd.bv_len);
3369+
RETVAL_STRINGL(lgenpasswd.bv_val, lgenpasswd.bv_len);
33723370
}
3371+
} else {
3372+
RETURN_TRUE;
33733373
}
33743374

3375-
ldap_memfree(lnewpasswd.bv_val);
3376-
3377-
RETURN_TRUE;
3375+
ldap_memfree(lgenpasswd.bv_val);
33783376
}
33793377
/* }}} */
33803378
#endif
33813379

33823380
#ifdef HAVE_LDAP_WHOAMI_S
3383-
/* {{{ proto bool ldap_exop_whoami(resource link , string authzid)
3381+
/* {{{ proto bool|string ldap_exop_whoami(resource link)
33843382
Whoami extended operation */
33853383
PHP_FUNCTION(ldap_exop_whoami)
33863384
{
3387-
zval *link, *authzid;
3385+
zval *link;
33883386
struct berval *lauthzid;
33893387
ldap_linkdata *ld;
33903388
int rc, myargcount = ZEND_NUM_ARGS();
33913389

3392-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "rz/", &link, &authzid) == FAILURE) {
3390+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &link) == FAILURE) {
33933391
WRONG_PARAM_COUNT;
33943392
}
33953393

@@ -3404,16 +3402,13 @@ PHP_FUNCTION(ldap_exop_whoami)
34043402
RETURN_FALSE;
34053403
}
34063404

3407-
zval_dtor(authzid);
34083405
if (lauthzid == NULL) {
3409-
ZVAL_EMPTY_STRING(authzid);
3406+
RETVAL_EMPTY_STRING();
34103407
} else {
3411-
ZVAL_STRINGL(authzid, lauthzid->bv_val, lauthzid->bv_len);
3408+
RETVAL_STRINGL(lauthzid->bv_val, lauthzid->bv_len);
34123409
ldap_memfree(lauthzid->bv_val);
34133410
ldap_memfree(lauthzid);
34143411
}
3415-
3416-
RETURN_TRUE;
34173412
}
34183413
/* }}} */
34193414
#endif
@@ -3708,19 +3703,17 @@ ZEND_END_ARG_INFO()
37083703
#endif
37093704

37103705
#ifdef HAVE_LDAP_PASSWD_S
3711-
ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_passwd, 0, 0, 5)
3706+
ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_passwd, 0, 0, 4)
37123707
ZEND_ARG_INFO(0, link)
37133708
ZEND_ARG_INFO(0, user)
37143709
ZEND_ARG_INFO(0, oldpw)
37153710
ZEND_ARG_INFO(0, newpw)
3716-
ZEND_ARG_INFO(1, newpasswd)
37173711
ZEND_END_ARG_INFO()
37183712
#endif
37193713

37203714
#ifdef HAVE_LDAP_WHOAMI_S
3721-
ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_whoami, 0, 0, 2)
3715+
ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_whoami, 0, 0, 1)
37223716
ZEND_ARG_INFO(0, link)
3723-
ZEND_ARG_INFO(1, authzid)
37243717
ZEND_END_ARG_INFO()
37253718
#endif
37263719

ext/ldap/tests/ldap_exop_passwd.phpt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ insert_dummy_data($link, $base);
1616
// and optionally returns the NEW password if none was passed.
1717
// ldap_exop_passwd(resource link [, string user [, string oldpw [, string newpw [, string newpasswd ]]]])
1818
var_dump(
19-
ldap_exop_passwd($link, "cn=userA,$base", "oops", "", $genpw),
20-
$genpw,
19+
$genpw = ldap_exop_passwd($link, "cn=userA,$base", "oops", ""),
2120
test_bind($host, $port, "cn=userA,$base", $genpw, $protocol_version),
2221
ldap_exop_passwd($link, "cn=userA,$base", $genpw, "newPassword"),
2322
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);
3332
remove_dummy_data($link, $base);
3433
?>
3534
--EXPECTF--
36-
bool(true)
3735
string(%d) "%s"
3836
bool(true)
3937
bool(true)

ext/ldap/tests/ldap_exop_whoami.phpt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@ insert_dummy_data($link, $base);
1414

1515
// ldap_exop_whoami(resource link [, string authzid])
1616
var_dump(
17-
ldap_exop_whoami($link, $authzid),
18-
$authzid
17+
ldap_exop_whoami($link)
1918
);
2019
?>
2120
===DONE===
@@ -28,6 +27,5 @@ $link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
2827
remove_dummy_data($link, $base);
2928
?>
3029
--EXPECTF--
31-
bool(true)
3230
string(%d) "dn:%s"
3331
===DONE===

0 commit comments

Comments
 (0)