From e5f6dcb9c2d6e22f96b93e4d3a3840d1bf93b610 Mon Sep 17 00:00:00 2001 From: foobar Date: Tue, 25 Jul 2000 15:34:28 +0000 Subject: [PATCH] @- Fixed a bug in ldap_get_entries() and ldap_get_attributes. (Jani) Fixes bugs #5433 and #5603. --- ext/ldap/ldap.c | 47 +++++++++++++++-------------------------------- 1 file changed, 15 insertions(+), 32 deletions(-) diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index b657e10909..4946b6f6cd 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -16,6 +16,7 @@ | Eric Warnke | | Rasmus Lerdorf | | Gerrit Thomson <334647@swin.edu.au> | + | Jani Taskinen | | PHP 4.0 updates: Zeev Suraski | +----------------------------------------------------------------------+ */ @@ -718,7 +719,6 @@ PHP_FUNCTION(ldap_get_entries) pval *tmp1, *tmp2; LDAP *ldap; int num_entries, num_attrib, num_values, i; - int attr_count, entry_count; BerElement *ber; char *attribute; size_t attr_len; @@ -736,32 +736,22 @@ PHP_FUNCTION(ldap_get_entries) if (ldap_result == NULL) RETURN_FALSE; num_entries = ldap_count_entries(ldap, ldap_result); + if (num_entries == 0) RETURN_FALSE; array_init(return_value); - add_assoc_long(return_value, "count", num_entries); - - if (num_entries == 0) return; + num_entries = 0; ldap_result_entry = ldap_first_entry(ldap, ldap_result); if (ldap_result_entry == NULL) RETURN_FALSE; - - entry_count = 0; while(ldap_result_entry != NULL) { - num_attrib = 0; - attribute = ldap_first_attribute(ldap, ldap_result_entry, &ber); - if (attribute == NULL) RETURN_FALSE; - while (attribute != NULL) { - num_attrib++; - attribute = ldap_next_attribute(ldap, ldap_result_entry, ber); - } - MAKE_STD_ZVAL(tmp1); array_init(tmp1); - attr_count = 0; + num_attrib = 0; attribute = ldap_first_attribute(ldap, ldap_result_entry, &ber); + while (attribute != NULL) { ldap_value = ldap_get_values(ldap, ldap_result_entry, attribute); num_values = ldap_count_values(ldap_value); @@ -769,16 +759,16 @@ PHP_FUNCTION(ldap_get_entries) MAKE_STD_ZVAL(tmp2); array_init(tmp2); add_assoc_long(tmp2, "count", num_values); - for(i=0; ivalue.ht, php_strtolower(attribute, attr_len), attr_len+1, (void *) &tmp2, sizeof(pval *), NULL); - add_index_string(tmp1, attr_count, attribute, 1); + add_index_string(tmp1, num_attrib, attribute, 1); - attr_count++; + num_attrib++; attribute = ldap_next_attribute(ldap, ldap_result_entry, ber); } @@ -786,13 +776,14 @@ PHP_FUNCTION(ldap_get_entries) dn = ldap_get_dn(ldap, ldap_result_entry); add_assoc_string(tmp1, "dn", dn, 1); - zend_hash_index_update(return_value->value.ht, entry_count, (void *) &tmp1, sizeof(pval *), NULL); + zend_hash_index_update(return_value->value.ht, num_entries, (void *) &tmp1, sizeof(pval *), NULL); - entry_count++; + num_entries++; ldap_result_entry = ldap_next_entry(ldap, ldap_result_entry); } add_assoc_long(return_value, "count", num_entries); + } /* }}} */ @@ -878,7 +869,7 @@ PHP_FUNCTION(ldap_get_attributes) LDAPMessage *ldap_result_entry; char *attribute; char **ldap_value; - int i, count, num_values, num_attrib; + int i, num_values, num_attrib; BerElement *ber; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &link, &result_entry) == FAILURE) { @@ -891,17 +882,9 @@ PHP_FUNCTION(ldap_get_attributes) ldap_result_entry = _get_ldap_result_entry(result_entry); if (ldap_result_entry == NULL) RETURN_FALSE; + array_init(return_value); num_attrib = 0; - attribute = ldap_first_attribute(ldap, ldap_result_entry, &ber); - if (attribute == NULL) RETURN_FALSE; - while (attribute != NULL) { - num_attrib++; - attribute = ldap_next_attribute(ldap, ldap_result_entry, ber); - } - array_init(return_value); - - count=0; attribute = ldap_first_attribute(ldap, ldap_result_entry, &ber); while (attribute != NULL) { ldap_value = ldap_get_values(ldap, ldap_result_entry, attribute); @@ -916,9 +899,9 @@ PHP_FUNCTION(ldap_get_attributes) ldap_value_free(ldap_value); zend_hash_update(return_value->value.ht, attribute, strlen(attribute)+1, (void *) &tmp, sizeof(pval *), NULL); - add_index_string(return_value, count, attribute, 1); + add_index_string(return_value, num_attrib, attribute, 1); - count++; + num_attrib++; attribute = ldap_next_attribute(ldap, ldap_result_entry, ber); } -- 2.50.1