summaryrefslogtreecommitdiff
path: root/ext/ldap/ldap.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/ldap/ldap.c')
-rw-r--r--ext/ldap/ldap.c200
1 files changed, 78 insertions, 122 deletions
diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c
index 5dda5e70e4..c09dee52bf 100644
--- a/ext/ldap/ldap.c
+++ b/ext/ldap/ldap.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 7 |
+----------------------------------------------------------------------+
- | Copyright (c) 1997-2018 The PHP Group |
+ | Copyright (c) The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -24,8 +24,6 @@
+----------------------------------------------------------------------+
*/
-#define IS_EXT_MODULE
-
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -41,9 +39,6 @@
#ifdef PHP_WIN32
#include <string.h>
#include "config.w32.h"
-#if HAVE_NSLDAP
-#include <winsock2.h>
-#endif
#define strdup _strdup
#undef WINDOWS
#undef strcasecmp
@@ -55,9 +50,7 @@
#include "ext/standard/php_string.h"
#include "ext/standard/info.h"
-#ifdef HAVE_LDAP_SASL_H
-#include <sasl.h>
-#elif defined(HAVE_LDAP_SASL_SASL_H)
+#ifdef HAVE_LDAP_SASL
#include <sasl/sasl.h>
#endif
@@ -98,6 +91,9 @@ static PHP_GINIT_FUNCTION(ldap);
static int le_link, le_result, le_result_entry;
#ifdef COMPILE_DL_LDAP
+#ifdef ZTS
+ZEND_TSRMLS_CACHE_DEFINE()
+#endif
ZEND_GET_MODULE(ldap)
#endif
@@ -105,7 +101,10 @@ static void _close_ldap_link(zend_resource *rsrc) /* {{{ */
{
ldap_linkdata *ld = (ldap_linkdata *)rsrc->ptr;
- ldap_unbind_ext(ld->link, NULL, NULL);
+ /* We use ldap_destroy rather than ldap_unbind here, because ldap_unbind
+ * will skip the destructor entirely if a critical client control is set. */
+ ldap_destroy(ld->link);
+
#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC)
zval_ptr_dtor(&ld->rebindproc);
#endif
@@ -263,10 +262,10 @@ static void _php_ldap_control_to_array(LDAP *ld, LDAPControl* ctrl, zval* array,
add_assoc_stringl(&value, "context", context->bv_val, context->bv_len);
}
add_assoc_zval(array, "value", &value);
+ ber_bvfree(context);
} else {
add_assoc_null(array, "value");
}
- ber_bvfree(context);
} else {
if (ctrl->ldctl_value.bv_len) {
add_assoc_stringl(array, "value", ctrl->ldctl_value.bv_val, ctrl->ldctl_value.bv_len);
@@ -622,7 +621,11 @@ static void _php_ldap_controls_to_array(LDAP *ld, LDAPControl** ctrls, zval* arr
zval tmp1;
LDAPControl **ctrlp;
- array_init(array);
+ array = zend_try_array_init(array);
+ if (!array) {
+ return;
+ }
+
if (ctrls == NULL) {
return;
}
@@ -703,6 +706,9 @@ PHP_INI_END()
*/
static PHP_GINIT_FUNCTION(ldap)
{
+#if defined(COMPILE_DL_LDAP) && defined(ZTS)
+ ZEND_TSRMLS_CACHE_UPDATE();
+#endif
ldap_globals->num_links = 0;
}
/* }}} */
@@ -728,7 +734,7 @@ PHP_MINIT_FUNCTION(ldap)
REGISTER_STRING_CONSTANT("LDAP_MODIFY_BATCH_MODTYPE", LDAP_MODIFY_BATCH_MODTYPE, CONST_PERSISTENT | CONST_CS);
REGISTER_STRING_CONSTANT("LDAP_MODIFY_BATCH_VALUES", LDAP_MODIFY_BATCH_VALUES, CONST_PERSISTENT | CONST_CS);
-#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP
+#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP
/* LDAP options */
REGISTER_LONG_CONSTANT("LDAP_OPT_DEREF", LDAP_OPT_DEREF, CONST_PERSISTENT | CONST_CS);
REGISTER_LONG_CONSTANT("LDAP_OPT_SIZELIMIT", LDAP_OPT_SIZELIMIT, CONST_PERSISTENT | CONST_CS);
@@ -942,10 +948,6 @@ PHP_MSHUTDOWN_FUNCTION(ldap)
PHP_MINFO_FUNCTION(ldap)
{
char tmp[32];
-#if HAVE_NSLDAP
- LDAPVersion ver;
- double SDKVersion;
-#endif
php_info_print_table_start();
php_info_print_table_row(2, "LDAP Support", "enabled");
@@ -971,25 +973,6 @@ PHP_MINFO_FUNCTION(ldap)
php_info_print_table_row(2, "Vendor Version", tmp);
#endif
-#if HAVE_NSLDAP
- SDKVersion = ldap_version(&ver);
- snprintf(tmp, 31, "%F", SDKVersion/100.0);
- php_info_print_table_row(2, "SDK Version", tmp);
-
- snprintf(tmp, 31, "%F", ver.protocol_version/100.0);
- php_info_print_table_row(2, "Highest LDAP Protocol Supported", tmp);
-
- snprintf(tmp, 31, "%F", ver.SSL_version/100.0);
- php_info_print_table_row(2, "SSL Level Supported", tmp);
-
- if (ver.security_level != LDAP_SECURITY_NONE) {
- snprintf(tmp, 31, "%d", ver.security_level);
- } else {
- strcpy(tmp, "SSL not enabled");
- }
- php_info_print_table_row(2, "Level of Encryption", tmp);
-#endif
-
#ifdef HAVE_LDAP_SASL
php_info_print_table_row(2, "SASL Support", "Enabled");
#endif
@@ -1106,7 +1089,6 @@ PHP_FUNCTION(ldap_connect)
*/
static int _get_lderrno(LDAP *ldap)
{
-#if !HAVE_NSLDAP
#if LDAP_API_VERSION > 2000 || HAVE_ORALDAP
int lderr;
@@ -1116,9 +1098,6 @@ static int _get_lderrno(LDAP *ldap)
#else
return ldap->ld_errno;
#endif
-#else
- return ldap_get_lderrno(ldap, NULL, NULL);
-#endif
}
/* }}} */
@@ -1126,16 +1105,12 @@ static int _get_lderrno(LDAP *ldap)
*/
static void _set_lderrno(LDAP *ldap, int lderr)
{
-#if !HAVE_NSLDAP
#if LDAP_API_VERSION > 2000 || HAVE_ORALDAP
/* New versions of OpenLDAP do it this way */
ldap_set_option(ldap, LDAP_OPT_ERROR_NUMBER, &lderr);
#else
ldap->ld_errno = lderr;
#endif
-#else
- ldap_set_lderrno(ldap, lderr, NULL, NULL);
-#endif
}
/* }}} */
@@ -1423,7 +1398,7 @@ static void php_set_opts(LDAP *ldap, int sizelimit, int timelimit, int deref, in
{
/* sizelimit */
if (sizelimit > -1) {
-#if (LDAP_API_VERSION >= 2004) || HAVE_NSLDAP || HAVE_ORALDAP
+#if (LDAP_API_VERSION >= 2004) || HAVE_ORALDAP
ldap_get_option(ldap, LDAP_OPT_SIZELIMIT, old_sizelimit);
ldap_set_option(ldap, LDAP_OPT_SIZELIMIT, &sizelimit);
#else
@@ -1434,7 +1409,7 @@ static void php_set_opts(LDAP *ldap, int sizelimit, int timelimit, int deref, in
/* timelimit */
if (timelimit > -1) {
-#if (LDAP_API_VERSION >= 2004) || HAVE_NSLDAP || HAVE_ORALDAP
+#if (LDAP_API_VERSION >= 2004) || HAVE_ORALDAP
ldap_get_option(ldap, LDAP_OPT_TIMELIMIT, old_timelimit);
ldap_set_option(ldap, LDAP_OPT_TIMELIMIT, &timelimit);
#else
@@ -1445,7 +1420,7 @@ static void php_set_opts(LDAP *ldap, int sizelimit, int timelimit, int deref, in
/* deref */
if (deref > -1) {
-#if (LDAP_API_VERSION >= 2004) || HAVE_NSLDAP || HAVE_ORALDAP
+#if (LDAP_API_VERSION >= 2004) || HAVE_ORALDAP
ldap_get_option(ldap, LDAP_OPT_DEREF, old_deref);
ldap_set_option(ldap, LDAP_OPT_DEREF, &deref);
#else
@@ -1471,7 +1446,7 @@ static void php_ldap_do_search(INTERNAL_FUNCTION_PARAMETERS, int scope)
int old_ldap_sizelimit = -1, old_ldap_timelimit = -1, old_ldap_deref = -1;
int num_attribs = 0, ret = 1, i, errno, argcount = ZEND_NUM_ARGS();
- if (zend_parse_parameters(argcount, "zzz|alllla/", &link, &base_dn, &filter, &attrs, &attrsonly,
+ if (zend_parse_parameters(argcount, "zzz|a/lllla/", &link, &base_dn, &filter, &attrs, &attrsonly,
&sizelimit, &timelimit, &deref, &serverctrls) == FAILURE) {
return;
}
@@ -1903,12 +1878,12 @@ PHP_FUNCTION(ldap_get_entries)
add_index_string(&tmp1, num_attrib, attribute);
num_attrib++;
-#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP || WINDOWS
+#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP || WINDOWS
ldap_memfree(attribute);
#endif
attribute = ldap_next_attribute(ldap, ldap_result_entry, ber);
}
-#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP || WINDOWS
+#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP || WINDOWS
if (ber != NULL) {
ber_free(ber, 0);
}
@@ -1921,7 +1896,7 @@ PHP_FUNCTION(ldap_get_entries)
} else {
add_assoc_null(&tmp1, "dn");
}
-#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP || WINDOWS
+#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP || WINDOWS
ldap_memfree(dn);
#else
free(dn);
@@ -1964,7 +1939,7 @@ PHP_FUNCTION(ldap_first_attribute)
RETURN_FALSE;
} else {
RETVAL_STRING(attribute);
-#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP || WINDOWS
+#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP || WINDOWS
ldap_memfree(attribute);
#endif
}
@@ -1999,7 +1974,7 @@ PHP_FUNCTION(ldap_next_attribute)
}
if ((attribute = ldap_next_attribute(ld->link, resultentry->data, resultentry->ber)) == NULL) {
-#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP || WINDOWS
+#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP || WINDOWS
if (resultentry->ber != NULL) {
ber_free(resultentry->ber, 0);
resultentry->ber = NULL;
@@ -2008,7 +1983,7 @@ PHP_FUNCTION(ldap_next_attribute)
RETURN_FALSE;
} else {
RETVAL_STRING(attribute);
-#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP || WINDOWS
+#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP || WINDOWS
ldap_memfree(attribute);
#endif
}
@@ -2059,12 +2034,12 @@ PHP_FUNCTION(ldap_get_attributes)
add_index_string(return_value, num_attrib, attribute);
num_attrib++;
-#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP || WINDOWS
+#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP || WINDOWS
ldap_memfree(attribute);
#endif
attribute = ldap_next_attribute(ld->link, resultentry->data, ber);
}
-#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP || WINDOWS
+#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP || WINDOWS
if (ber != NULL) {
ber_free(ber, 0);
}
@@ -2140,7 +2115,7 @@ PHP_FUNCTION(ldap_get_dn)
text = ldap_get_dn(ld->link, resultentry->data);
if (text != NULL) {
RETVAL_STRING(text);
-#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP || WINDOWS
+#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP || WINDOWS
ldap_memfree(text);
#else
free(text);
@@ -2199,7 +2174,7 @@ PHP_FUNCTION(ldap_dn2ufn)
if (ufn != NULL) {
RETVAL_STRING(ufn);
-#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP || WINDOWS
+#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP || WINDOWS
ldap_memfree(ufn);
#endif
} else {
@@ -3039,7 +3014,7 @@ PHP_FUNCTION(ldap_sort)
}
/* }}} */
-#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP
+#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP
/* {{{ proto bool ldap_get_option(resource link, int option, mixed retval)
Get the current value of various session-wide parameters */
PHP_FUNCTION(ldap_get_option)
@@ -3048,7 +3023,7 @@ PHP_FUNCTION(ldap_get_option)
ldap_linkdata *ld;
zend_long option;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "rlz/", &link, &option, &retval) != SUCCESS) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rlz", &link, &option, &retval) != SUCCESS) {
return;
}
@@ -3090,8 +3065,7 @@ PHP_FUNCTION(ldap_get_option)
if (ldap_get_option(ld->link, option, &val)) {
RETURN_FALSE;
}
- zval_ptr_dtor(retval);
- ZVAL_LONG(retval, val);
+ ZEND_TRY_ASSIGN_REF_LONG(retval, val);
} break;
#ifdef LDAP_OPT_NETWORK_TIMEOUT
case LDAP_OPT_NETWORK_TIMEOUT:
@@ -3107,8 +3081,7 @@ PHP_FUNCTION(ldap_get_option)
if (!timeout) {
RETURN_FALSE;
}
- zval_ptr_dtor(retval);
- ZVAL_LONG(retval, timeout->tv_sec);
+ ZEND_TRY_ASSIGN_REF_LONG(retval, timeout->tv_sec);
ldap_memfree(timeout);
} break;
#elif defined(LDAP_X_OPT_CONNECT_TIMEOUT)
@@ -3119,8 +3092,7 @@ PHP_FUNCTION(ldap_get_option)
if (ldap_get_option(ld->link, LDAP_X_OPT_CONNECT_TIMEOUT, &timeout)) {
RETURN_FALSE;
}
- zval_ptr_dtor(retval);
- ZVAL_LONG(retval, (timeout / 1000));
+ ZEND_TRY_ASSIGN_REF_LONG(retval, (timeout / 1000));
} break;
#endif
#ifdef LDAP_OPT_TIMEOUT
@@ -3137,8 +3109,7 @@ PHP_FUNCTION(ldap_get_option)
if (!timeout) {
RETURN_FALSE;
}
- zval_ptr_dtor(retval);
- ZVAL_LONG(retval, timeout->tv_sec);
+ ZEND_TRY_ASSIGN_REF_LONG(retval, timeout->tv_sec);
ldap_memfree(timeout);
} break;
#endif
@@ -3185,8 +3156,7 @@ PHP_FUNCTION(ldap_get_option)
}
RETURN_FALSE;
}
- zval_ptr_dtor(retval);
- ZVAL_STRING(retval, val);
+ ZEND_TRY_ASSIGN_REF_STRING(retval, val);
ldap_memfree(val);
} break;
case LDAP_OPT_SERVER_CONTROLS:
@@ -3200,7 +3170,6 @@ PHP_FUNCTION(ldap_get_option)
}
RETURN_FALSE;
}
- zval_ptr_dtor(retval);
_php_ldap_controls_to_array(ld->link, ctrls, retval, 1);
} break;
/* options not implemented
@@ -3409,7 +3378,7 @@ PHP_FUNCTION(ldap_parse_result)
char *lmatcheddn, *lerrmsg;
int rc, lerrcode, myargcount = ZEND_NUM_ARGS();
- if (zend_parse_parameters(myargcount, "rrz/|z/z/z/z/", &link, &result, &errcode, &matcheddn, &errmsg, &referrals, &serverctrls) != SUCCESS) {
+ if (zend_parse_parameters(myargcount, "rrz|zzzz", &link, &result, &errcode, &matcheddn, &errmsg, &referrals, &serverctrls) != SUCCESS) {
return;
}
@@ -3432,16 +3401,17 @@ PHP_FUNCTION(ldap_parse_result)
RETURN_FALSE;
}
- zval_ptr_dtor(errcode);
- ZVAL_LONG(errcode, lerrcode);
+ ZEND_TRY_ASSIGN_REF_LONG(errcode, lerrcode);
/* Reverse -> fall through */
switch (myargcount) {
case 7:
_php_ldap_controls_to_array(ld->link, lserverctrls, serverctrls, 0);
case 6:
- zval_ptr_dtor(referrals);
- array_init(referrals);
+ referrals = zend_try_array_init(referrals);
+ if (!referrals) {
+ return;
+ }
if (lreferrals != NULL) {
refp = lreferrals;
while (*refp) {
@@ -3451,19 +3421,17 @@ PHP_FUNCTION(ldap_parse_result)
ldap_memvfree((void**)lreferrals);
}
case 5:
- zval_ptr_dtor(errmsg);
if (lerrmsg == NULL) {
- ZVAL_EMPTY_STRING(errmsg);
+ ZEND_TRY_ASSIGN_REF_EMPTY_STRING(errmsg);
} else {
- ZVAL_STRING(errmsg, lerrmsg);
+ ZEND_TRY_ASSIGN_REF_STRING(errmsg, lerrmsg);
ldap_memfree(lerrmsg);
}
case 4:
- zval_ptr_dtor(matcheddn);
if (lmatcheddn == NULL) {
- ZVAL_EMPTY_STRING(matcheddn);
+ ZEND_TRY_ASSIGN_REF_EMPTY_STRING(matcheddn);
} else {
- ZVAL_STRING(matcheddn, lmatcheddn);
+ ZEND_TRY_ASSIGN_REF_STRING(matcheddn, lmatcheddn);
ldap_memfree(lmatcheddn);
}
}
@@ -3474,7 +3442,7 @@ PHP_FUNCTION(ldap_parse_result)
/* {{{ Extended operation response parsing, Pierangelo Masarati */
#ifdef HAVE_LDAP_PARSE_EXTENDED_RESULT
-/* {{{ proto bool ldap_parse_exop(resource link, resource result [, string retdata [, string retoid]])
+/* {{{ proto bool ldap_parse_exop(resource link, resource result [, string &retdata [, string &retoid]])
Extract information from extended operation result */
PHP_FUNCTION(ldap_parse_exop)
{
@@ -3485,7 +3453,7 @@ PHP_FUNCTION(ldap_parse_exop)
struct berval *lretdata;
int rc, myargcount = ZEND_NUM_ARGS();
- if (zend_parse_parameters(myargcount, "rr|z/z/", &link, &result, &retdata, &retoid) != SUCCESS) {
+ if (zend_parse_parameters(myargcount, "rr|zz", &link, &result, &retdata, &retoid) != SUCCESS) {
WRONG_PARAM_COUNT;
}
@@ -3509,20 +3477,18 @@ PHP_FUNCTION(ldap_parse_exop)
/* Reverse -> fall through */
switch (myargcount) {
case 4:
- zval_ptr_dtor(retoid);
if (lretoid == NULL) {
- ZVAL_EMPTY_STRING(retoid);
+ ZEND_TRY_ASSIGN_REF_EMPTY_STRING(retoid);
} else {
- ZVAL_STRING(retoid, lretoid);
+ ZEND_TRY_ASSIGN_REF_STRING(retoid, lretoid);
ldap_memfree(lretoid);
}
case 3:
/* use arg #3 as the data returned by the server */
- zval_ptr_dtor(retdata);
if (lretdata == NULL) {
- ZVAL_EMPTY_STRING(retdata);
+ ZEND_TRY_ASSIGN_REF_EMPTY_STRING(retdata);
} else {
- ZVAL_STRINGL(retdata, lretdata->bv_val, lretdata->bv_len);
+ ZEND_TRY_ASSIGN_REF_STRINGL(retdata, lretdata->bv_val, lretdata->bv_len);
ldap_memfree(lretdata->bv_val);
ldap_memfree(lretdata);
}
@@ -3600,7 +3566,7 @@ PHP_FUNCTION(ldap_next_reference)
/* }}} */
#ifdef HAVE_LDAP_PARSE_REFERENCE
-/* {{{ proto bool ldap_parse_reference(resource link, resource reference_entry, array referrals)
+/* {{{ proto bool ldap_parse_reference(resource link, resource reference_entry, array &referrals)
Extract information from reference entry */
PHP_FUNCTION(ldap_parse_reference)
{
@@ -3609,7 +3575,7 @@ PHP_FUNCTION(ldap_parse_reference)
ldap_resultentry *resultentry;
char **lreferrals, **refp;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "rrz/", &link, &result_entry, &referrals) != SUCCESS) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rrz", &link, &result_entry, &referrals) != SUCCESS) {
return;
}
@@ -3625,8 +3591,11 @@ PHP_FUNCTION(ldap_parse_reference)
RETURN_FALSE;
}
- zval_ptr_dtor(referrals);
- array_init(referrals);
+ referrals = zend_try_array_init(referrals);
+ if (!referrals) {
+ return;
+ }
+
if (lreferrals != NULL) {
refp = lreferrals;
while (*refp) {
@@ -3666,7 +3635,7 @@ static void php_ldap_do_rename(INTERNAL_FUNCTION_PARAMETERS, int ext)
newparent = NULL;
}
-#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP
+#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP
if (serverctrls) {
lserverctrls = _php_ldap_controls_from_array(ld->link, serverctrls);
if (lserverctrls == NULL) {
@@ -3766,7 +3735,7 @@ PHP_FUNCTION(ldap_start_tls)
}
/* }}} */
#endif
-#endif /* (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP */
+#endif /* (LDAP_API_VERSION > 2000) || HAVE_ORALDAP */
#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC)
/* {{{ _ldap_rebind_proc()
@@ -4091,7 +4060,7 @@ PHP_FUNCTION(ldap_control_paged_result_response)
ber_tag_t tag;
int rc, lerrcode, myargcount = ZEND_NUM_ARGS();
- if (zend_parse_parameters(myargcount, "rr|z/z/", &link, &result, &cookie, &estimated) != SUCCESS) {
+ if (zend_parse_parameters(myargcount, "rr|zz", &link, &result, &cookie, &estimated) != SUCCESS) {
return;
}
@@ -4158,15 +4127,13 @@ PHP_FUNCTION(ldap_control_paged_result_response)
ldap_controls_free(lserverctrls);
if (myargcount == 4) {
- zval_ptr_dtor(estimated);
- ZVAL_LONG(estimated, lestimated);
+ ZEND_TRY_ASSIGN_REF_LONG(estimated, lestimated);
}
- zval_ptr_dtor(cookie);
if (lcookie.bv_len == 0) {
- ZVAL_EMPTY_STRING(cookie);
+ ZEND_TRY_ASSIGN_REF_EMPTY_STRING(cookie);
} else {
- ZVAL_STRINGL(cookie, lcookie.bv_val, lcookie.bv_len);
+ ZEND_TRY_ASSIGN_REF_STRINGL(cookie, lcookie.bv_val, lcookie.bv_len);
}
ldap_memfree(lcookie.bv_val);
@@ -4191,7 +4158,7 @@ PHP_FUNCTION(ldap_exop)
LDAPControl **lserverctrls = NULL;
int rc, msgid;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "rS|S!a!z/z/", &link, &reqoid, &reqdata, &serverctrls, &retdata, &retoid) != SUCCESS) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rS|S!a!zz", &link, &reqoid, &reqdata, &serverctrls, &retdata, &retoid) != SUCCESS) {
return;
}
@@ -4229,22 +4196,20 @@ PHP_FUNCTION(ldap_exop)
}
if (retoid) {
- zval_ptr_dtor(retoid);
if (lretoid) {
- ZVAL_STRING(retoid, lretoid);
+ ZEND_TRY_ASSIGN_REF_STRING(retoid, lretoid);
ldap_memfree(lretoid);
} else {
- ZVAL_EMPTY_STRING(retoid);
+ ZEND_TRY_ASSIGN_REF_EMPTY_STRING(retoid);
}
}
- zval_ptr_dtor(retdata);
if (lretdata) {
- ZVAL_STRINGL(retdata, lretdata->bv_val, lretdata->bv_len);
+ ZEND_TRY_ASSIGN_REF_STRINGL(retdata, lretdata->bv_val, lretdata->bv_len);
ldap_memfree(lretdata->bv_val);
ldap_memfree(lretdata);
} else {
- ZVAL_EMPTY_STRING(retdata);
+ ZEND_TRY_ASSIGN_REF_EMPTY_STRING(retdata);
}
RETVAL_TRUE;
@@ -4698,7 +4663,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_control_paged_result_response, 0, 0, 2)
ZEND_END_ARG_INFO();
#endif
-#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP
+#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP
ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_rename, 0, 0, 5)
ZEND_ARG_INFO(0, link_identifier)
ZEND_ARG_INFO(0, dn)
@@ -4882,7 +4847,7 @@ static const zend_function_entry ldap_functions[] = {
PHP_FE(ldap_compare, arginfo_ldap_compare)
PHP_DEP_FE(ldap_sort, arginfo_ldap_sort)
-#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP
+#if (LDAP_API_VERSION > 2000) || HAVE_ORALDAP
PHP_FE(ldap_rename, arginfo_ldap_rename)
PHP_FE(ldap_rename_ext, arginfo_ldap_rename_ext)
PHP_FE(ldap_get_option, arginfo_ldap_get_option)
@@ -4927,8 +4892,8 @@ static const zend_function_entry ldap_functions[] = {
#endif
#ifdef LDAP_CONTROL_PAGEDRESULTS
- PHP_FE(ldap_control_paged_result, arginfo_ldap_control_paged_result)
- PHP_FE(ldap_control_paged_result_response, arginfo_ldap_control_paged_result_response)
+ PHP_DEP_FE(ldap_control_paged_result, arginfo_ldap_control_paged_result)
+ PHP_DEP_FE(ldap_control_paged_result_response, arginfo_ldap_control_paged_result_response)
#endif
PHP_FE_END
};
@@ -4951,12 +4916,3 @@ zend_module_entry ldap_module_entry = { /* {{{ */
STANDARD_MODULE_PROPERTIES_EX
};
/* }}} */
-
-/*
- * Local variables:
- * tab-width: 4
- * c-basic-offset: 4
- * End:
- * vim600: sw=4 ts=4 fdm=marker
- * vim<600: sw=4 ts=4
- */