cvs: php-src(PHP_4_3) /main main.c
| From: | Zeev Suraski | Date: | Tue, 22 Jul 2003 15:46:48 +0000 |
| Subject: | cvs: php-src(PHP_4_3) /main main.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-22719@lists.php.net to get a copy of this message | ||
zeev Tue Jul 22 11:46:48 2003 EDT
Modified files: (Branch: PHP_4_3)
/php-src/main main.c
Log:
Fix potential crash (zend_hash_get_current_key_ex() doesn't touch the string arguments if
the key is not a string!)
Index: php-src/main/main.c
diff -u php-src/main/main.c:1.512.2.42 php-src/main/main.c:1.512.2.43
--- php-src/main/main.c:1.512.2.42 Fri Jun 20 13:00:16 2003
+++ php-src/main/main.c Tue Jul 22 11:46:48 2003
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: main.c,v 1.512.2.42 2003/06/20 17:00:16 iliaa Exp $ */
+/* $Id: main.c,v 1.512.2.43 2003/07/22 15:46:48 zeev Exp $ */
/* {{{ includes
*/
@@ -1337,9 +1337,9 @@
zend_hash_internal_pointer_reset_ex(src, &pos);
while (zend_hash_get_current_data_ex(src, (void **)&src_entry, &pos) == SUCCESS) {
key_type = zend_hash_get_current_key_ex(src, &string_key, &string_key_len, &num_key,
0, &pos);
- if (Z_TYPE_PP(src_entry) != IS_ARRAY ||
- (string_key_len && zend_hash_find(dest, string_key, string_key_len, (void
**)&dest_entry) != SUCCESS) ||
- (!string_key_len && zend_hash_index_find(dest, num_key, (void **)&dest_entry) !=
SUCCESS)
+ if (Z_TYPE_PP(src_entry) != IS_ARRAY
+ || (key_type==HASH_KEY_IS_STRING && zend_hash_find(dest, string_key, string_key_len,
(void **)&dest_entry) != SUCCESS)
+ || (key_type==HASH_KEY_IS_LONG && zend_hash_index_find(dest, num_key, (void
**)&dest_entry) != SUCCESS)
|| Z_TYPE_PP(dest_entry) != IS_ARRAY) {
(*src_entry)->refcount++;
if (key_type == HASH_KEY_IS_STRING) {