tony2001 Wed Aug 30 09:58:10 2006 UTC
Modified files:
/ZendEngine2 zend_execute.c
Log:
fix off-by-one in zend_fetch_dimension_address_inner()
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_execute.c?r1=1.750&r2=1.751&diff_format=u
Index: ZendEngine2/zend_execute.c
diff -u ZendEngine2/zend_execute.c:1.750 ZendEngine2/zend_execute.c:1.751
--- ZendEngine2/zend_execute.c:1.750 Tue Jul 18 17:52:44 2006
+++ ZendEngine2/zend_execute.c Wed Aug 30 09:58:10 2006
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_execute.c,v 1.750 2006/07/18 17:52:44 andrei Exp $ */
+/* $Id: zend_execute.c,v 1.751 2006/08/30 09:58:10 tony2001 Exp $ */
#define ZEND_INTENSIVE_DEBUGGING 0
@@ -928,14 +928,14 @@
case IS_NULL:
ztype = IS_STRING;
offset_key.s = "";
- offset_key_length = 1;
+ offset_key_length = 0;
goto fetch_string_dim;
case IS_STRING:
case IS_UNICODE:
offset_key = Z_UNIVAL_P(dim);
- offset_key_length = Z_UNILEN_P(dim)+1;
+ offset_key_length = Z_UNILEN_P(dim);
fetch_string_dim:
if (UG(unicode) && ht == &EG(symbol_table) && ztype ==
IS_UNICODE) {
@@ -951,7 +951,7 @@
free_offset = 1;
}
}
- if (zend_u_symtable_find(ht, ztype, offset_key,
offset_key_length, (void **) &retval) == FAILURE) {
+ if (zend_u_symtable_find(ht, ztype, offset_key,
offset_key_length + 1, (void **) &retval) == FAILURE) {
switch (type) {
case BP_VAR_R:
zend_error(E_NOTICE, "Undefined
index: %R", ztype, offset_key);
@@ -967,7 +967,7 @@
zval *new_zval =
&EG(uninitialized_zval);
new_zval->refcount++;
-
zend_u_symtable_update(ht, ztype, offset_key, offset_key_length, &new_zval,
sizeof(zval *), (void **) &retval);
+
zend_u_symtable_update(ht, ztype, offset_key, offset_key_length + 1, &new_zval,
sizeof(zval *), (void **) &retval);
}
break;
}
--
Zend Engine CVS Mailing List (http://cvs.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
|