diff options
Diffstat (limited to 'ext/ldap/ldap.c')
| -rw-r--r-- | ext/ldap/ldap.c | 200 |
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 - */ |
