From ed942af693e438709260368f4544d1af0990d83a Mon Sep 17 00:00:00 2001 From: Stig Venaas Date: Sun, 23 Dec 2001 16:32:06 +0000 Subject: [PATCH] Made ldap_set_option work with NULL as link, added option LDAP_OPT_DEBUG_LEVEL for those that support it, and made sure the rebind code is currently included for OpenLDAP only. --- ext/ldap/ldap.c | 32 ++++++++++++++++++++++---------- ext/ldap/php_ldap.h | 2 +- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 2e29ae11a2..10d140912d 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -53,7 +53,7 @@ typedef struct { LDAP *link; -#ifdef HAVE_3ARG_SETREBINDPROC +#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC) zval *rebindproc; #endif } ldap_linkdata; @@ -122,7 +122,7 @@ function_entry ldap_functions[] = { PHP_FE(ldap_start_tls, NULL) #endif -#ifdef HAVE_3ARG_SETREBINDPROC +#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC) PHP_FE(ldap_set_rebind_proc, NULL) #endif @@ -159,7 +159,7 @@ static void _close_ldap_link(zend_rsrc_list_entry *rsrc TSRMLS_DC) ldap_linkdata *ld = (ldap_linkdata *)rsrc->ptr; ldap_unbind_s(ld->link); -#ifdef HAVE_3ARG_SETREBINDPROC +#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC) if (ld->rebindproc != NULL) { zval_dtor(ld->rebindproc); FREE_ZVAL(ld->rebindproc); @@ -222,6 +222,9 @@ PHP_MINIT_FUNCTION(ldap) REGISTER_LONG_CONSTANT("LDAP_OPT_SERVER_CONTROLS", LDAP_OPT_SERVER_CONTROLS, CONST_PERSISTENT | CONST_CS); REGISTER_LONG_CONSTANT("LDAP_OPT_CLIENT_CONTROLS", LDAP_OPT_CLIENT_CONTROLS, CONST_PERSISTENT | CONST_CS); #endif +#ifdef LDAP_OPT_DEBUG_LEVEL + REGISTER_LONG_CONSTANT("LDAP_OPT_DEBUG_LEVEL", LDAP_OPT_DEBUG_LEVEL, CONST_PERSISTENT | CONST_CS); +#endif #ifdef ORALDAP REGISTER_LONG_CONSTANT("GSLC_SSL_NO_AUTH", GSLC_SSL_NO_AUTH, CONST_PERSISTENT | CONST_CS); @@ -1662,6 +1665,7 @@ PHP_FUNCTION(ldap_set_option) { pval **link, **option, **newval; ldap_linkdata *ld; + LDAP *ldap; int opt; if (ZEND_NUM_ARGS() != 3 || @@ -1669,7 +1673,12 @@ PHP_FUNCTION(ldap_set_option) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, link, -1, "ldap link", le_link); + if (Z_TYPE_PP(link) == IS_NULL) { + ldap = NULL; + } else { + ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, link, -1, "ldap link", le_link); + ldap = ld->link; + } convert_to_long_ex(option); opt = Z_LVAL_PP(option); @@ -1681,11 +1690,14 @@ PHP_FUNCTION(ldap_set_option) case LDAP_OPT_TIMELIMIT: case LDAP_OPT_PROTOCOL_VERSION: case LDAP_OPT_ERROR_NUMBER: +#ifdef LDAP_OPT_DEBUG_LEVEL + case LDAP_OPT_DEBUG_LEVEL: +#endif { int val; convert_to_long_ex(newval); val = Z_LVAL_PP(newval); - if (ldap_set_option(ld->link, opt, &val)) { + if (ldap_set_option(ldap, opt, &val)) { RETURN_FALSE; } } break; @@ -1699,7 +1711,7 @@ PHP_FUNCTION(ldap_set_option) char *val; convert_to_string_ex(newval); val = Z_STRVAL_PP(newval); - if (ldap_set_option(ld->link, opt, val)) { + if (ldap_set_option(ldap, opt, val)) { RETURN_FALSE; } } break; @@ -1711,7 +1723,7 @@ PHP_FUNCTION(ldap_set_option) convert_to_boolean_ex(newval); val = Z_LVAL_PP(newval) ? LDAP_OPT_ON : LDAP_OPT_OFF; - if (ldap_set_option(ld->link, opt, val)) { + if (ldap_set_option(ldap, opt, val)) { RETURN_FALSE; } } break; @@ -1766,7 +1778,7 @@ PHP_FUNCTION(ldap_set_option) zend_hash_move_forward(Z_ARRVAL_PP(newval)); } if (!error) { - error = ldap_set_option(ld->link, opt, ctrls); + error = ldap_set_option(ldap, opt, ctrls); } ctrlp = ctrls; while ( *ctrlp ) { @@ -2006,8 +2018,8 @@ PHP_FUNCTION(ldap_start_tls) #endif -#ifdef HAVE_3ARG_SETREBINDPROC -int _ldap_rebind_proc(LDAP *ldap, LDAP_CONST char *url, ber_tag_t req, ber_int_t msgid, void *params) { +#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC) +int _ldap_rebind_proc(LDAP *ldap, const char *url, ber_tag_t req, ber_int_t msgid, void *params) { ldap_linkdata *ld; int retval; zval *cb_url; diff --git a/ext/ldap/php_ldap.h b/ext/ldap/php_ldap.h index 8b4343eeb2..fd82391e1f 100644 --- a/ext/ldap/php_ldap.h +++ b/ext/ldap/php_ldap.h @@ -94,7 +94,7 @@ PHP_FUNCTION(ldap_rename); PHP_FUNCTION(ldap_start_tls); #endif -#ifdef HAVE_3ARG_SETREBINDPROC +#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC) PHP_FUNCTION(ldap_set_rebind_proc); #endif -- 2.40.0