cvs: php4 /ext/ldap ldap.c

From: Date: Mon, 05 Nov 2001 11:50:52 +0000
Subject: cvs: php4 /ext/ldap ldap.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-8082@lists.php.net to get a copy of this message
venaas Mon Nov 5 06:50:52 2001 EDT Modified files: /php4/ext/ldap ldap.c Log: Fixed seg fault when using ldap_add (or modify) with value array not indexed as 0, 1, ... In some cases it didn't give seg fault, but used previously added value. Now gives warning. @- Made ldap_add (and modify) give warning with illegal value arrays. @ Previously seg faulted or added wrong value (Stig Venaas) Index: php4/ext/ldap/ldap.c diff -u php4/ext/ldap/ldap.c:1.100 php4/ext/ldap/ldap.c:1.101 --- php4/ext/ldap/ldap.c:1.100 Thu Oct 11 19:33:01 2001 +++ php4/ext/ldap/ldap.c Mon Nov 5 06:50:52 2001 @@ -22,7 +22,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ldap.c,v 1.100 2001/10/11 23:33:01 ssb Exp $ */ +/* $Id: ldap.c,v 1.101 2001/11/05 11:50:52 venaas Exp $ */ #define IS_EXT_MODULE #ifdef HAVE_CONFIG_H @@ -257,7 +257,7 @@ php_info_print_table_start(); php_info_print_table_row(2, "LDAP Support", "enabled" ); - php_info_print_table_row(2, "RCS Version", "$Id: ldap.c,v 1.100 2001/10/11 23:33:01 ssb Exp $" ); + php_info_print_table_row(2, "RCS Version", "$Id: ldap.c,v 1.101 2001/11/05 11:50:52 venaas Exp $" ); php_info_print_table_row(2, "Total Links", maxl ); #ifdef LDAP_API_VERSION @@ -1343,7 +1343,13 @@ ldap_mods[i]->mod_bvalues[0]->bv_val = Z_STRVAL_PP(value); } else { for(j=0; j < num_values; j++) { - zend_hash_index_find(Z_ARRVAL_PP(value), j, (void **) &ivalue); + if (zend_hash_index_find(Z_ARRVAL_PP(value), j, (void **) &ivalue) == FAILURE) { + php_error(E_WARNING, "LDAP: Value array must have consecutive indices 0, 1, ..."); + num_berval[i] = j; + num_attribs = i + 1; + RETVAL_FALSE; + goto errexit; + } convert_to_string_ex(ivalue); ldap_mods[i]->mod_bvalues[j] = (struct berval *) emalloc (sizeof(struct berval)); ldap_mods[i]->mod_bvalues[j]->bv_len = Z_STRLEN_PP(ivalue); @@ -1370,6 +1376,7 @@ } else RETVAL_TRUE; } +errexit: for(i=0; i < num_attribs; i++) { efree(ldap_mods[i]->mod_type); for(j=0; j<num_berval[i]; j++) {

« previous php.cvs (#8082) next »