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