tony2001                Fri Sep 16 13:11:05 2005 EDT

  Modified files:              (Branch: PHP_5_1)
    /php-src/ext/standard       http.c var.c 
    /php-src/ext/soap   php_encoding.c 
    /php-src/ext/wddx   wddx.c 
  Log:
  fix #34505 (possible memory corruption when unmangling properties with empty 
names)
  2nd part
  
  
http://cvs.php.net/diff.php/php-src/ext/standard/http.c?r1=1.14&r2=1.14.2.1&ty=u
Index: php-src/ext/standard/http.c
diff -u php-src/ext/standard/http.c:1.14 php-src/ext/standard/http.c:1.14.2.1
--- php-src/ext/standard/http.c:1.14    Wed Aug  3 10:08:04 2005
+++ php-src/ext/standard/http.c Fri Sep 16 13:10:58 2005
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: http.c,v 1.14 2005/08/03 14:08:04 sniper Exp $ */
+/* $Id: http.c,v 1.14.2.1 2005/09/16 17:10:58 tony2001 Exp $ */
 
 #include "php_http.h"
 #include "php_ini.h"
@@ -69,7 +69,7 @@
                                /* private or protected property access outside 
of the class */
                                continue;
                        }
-                       zend_unmangle_property_name(key, &tmp, &key);
+                       zend_unmangle_property_name_ex(key, key_len, &tmp, 
&key);
                        key_len = strlen(key);          
                }
 
http://cvs.php.net/diff.php/php-src/ext/standard/var.c?r1=1.203.2.2&r2=1.203.2.3&ty=u
Index: php-src/ext/standard/var.c
diff -u php-src/ext/standard/var.c:1.203.2.2 
php-src/ext/standard/var.c:1.203.2.3
--- php-src/ext/standard/var.c:1.203.2.2        Mon Sep 12 03:13:54 2005
+++ php-src/ext/standard/var.c  Fri Sep 16 13:10:58 2005
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: var.c,v 1.203.2.2 2005/09/12 07:13:54 dmitry Exp $ */
+/* $Id: var.c,v 1.203.2.3 2005/09/16 17:10:58 tony2001 Exp $ */
 
 
 
@@ -76,7 +76,7 @@
        if (hash_key->nKeyLength ==0 ) { /* numeric key */
                php_printf("%*c[%ld]=>\n", level + 1, ' ', hash_key->h);
        } else { /* string key */
-               zend_unmangle_property_name(hash_key->arKey, &class_name, 
&prop_name);
+               zend_unmangle_property_name_ex(hash_key->arKey, 
hash_key->nKeyLength, &class_name, &prop_name);
                if (class_name) {
                        php_printf("%*c[\"%s", level + 1, ' ', prop_name);
                        if (class_name[0]=='*') {
@@ -351,7 +351,7 @@
 
        if (hash_key->nKeyLength != 0) {
                php_printf("%*c", level + 1, ' ');
-               zend_unmangle_property_name(hash_key->arKey, &class_name, 
&prop_name);
+               zend_unmangle_property_name_ex(hash_key->arKey, 
hash_key->nKeyLength, &class_name, &prop_name);
                if (class_name) {
                        if (class_name[0] == '*') {
                                php_printf("protected");
http://cvs.php.net/diff.php/php-src/ext/soap/php_encoding.c?r1=1.103.2.1&r2=1.103.2.2&ty=u
Index: php-src/ext/soap/php_encoding.c
diff -u php-src/ext/soap/php_encoding.c:1.103.2.1 
php-src/ext/soap/php_encoding.c:1.103.2.2
--- php-src/ext/soap/php_encoding.c:1.103.2.1   Wed Aug 24 07:46:11 2005
+++ php-src/ext/soap/php_encoding.c     Fri Sep 16 13:11:00 2005
@@ -17,7 +17,7 @@
   |          Dmitry Stogov <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
 */
-/* $Id: php_encoding.c,v 1.103.2.1 2005/08/24 11:46:11 dmitry Exp $ */
+/* $Id: php_encoding.c,v 1.103.2.2 2005/09/16 17:11:00 tony2001 Exp $ */
 
 #include <time.h>
 
@@ -1669,9 +1669,9 @@
                                zval **zprop;
                                char *str_key;
                                ulong index;
-                               int key_type;
+                               int key_type, str_key_len;
 
-                               key_type = zend_hash_get_current_key(prop, 
&str_key, &index, FALSE);
+                               key_type = zend_hash_get_current_key_ex(prop, 
&str_key, &str_key_len, &index, FALSE, NULL);
                                zend_hash_get_current_data(prop, (void 
**)&zprop);
 
                                property = 
master_to_xml(get_conversion((*zprop)->type), (*zprop), style, xmlParam);
@@ -1682,7 +1682,7 @@
                                        if (Z_TYPE_P(data) == IS_OBJECT) {
                                                char *class_name;
 
-                                               
zend_unmangle_property_name(str_key, &class_name, &prop_name);
+                                               
zend_unmangle_property_name_ex(str_key, str_key_len, &class_name, &prop_name);
                                        } else {
                                                prop_name = str_key;
                                        }
http://cvs.php.net/diff.php/php-src/ext/wddx/wddx.c?r1=1.119.2.2&r2=1.119.2.3&ty=u
Index: php-src/ext/wddx/wddx.c
diff -u php-src/ext/wddx/wddx.c:1.119.2.2 php-src/ext/wddx/wddx.c:1.119.2.3
--- php-src/ext/wddx/wddx.c:1.119.2.2   Wed Aug 31 10:31:44 2005
+++ php-src/ext/wddx/wddx.c     Fri Sep 16 13:11:02 2005
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: wddx.c,v 1.119.2.2 2005/08/31 14:31:44 sniper Exp $ */
+/* $Id: wddx.c,v 1.119.2.3 2005/09/16 17:11:02 tony2001 Exp $ */
 
 #include "php.h"
 
@@ -524,7 +524,7 @@
                        if (zend_hash_get_current_key_ex(HASH_OF(obj), &key, 
&key_len, &idx, 0, NULL) == HASH_KEY_IS_STRING) {
                                char *class_name, *prop_name;
                                
-                               zend_unmangle_property_name(key, &class_name, 
&prop_name);
+                               zend_unmangle_property_name_ex(key, key_len, 
&class_name, &prop_name);
                                php_wddx_serialize_var(packet, *ent, prop_name, 
strlen(prop_name)+1 TSRMLS_CC);
                        } else {
                                key_len = sprintf(tmp_buf, "%ld", idx);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to