ID:               44798
 User updated by:  aldo at armiento dot com
 Reported By:      aldo at armiento dot com
 Status:           Open
 Bug Type:         SimpleXML related
 Operating System: Linux 2.6.18-686
 PHP Version:      5.2.5
 New Comment:

This patch to php-5.2.5 sources in ext/simplexml/simplexml.c solve the

problem.

The problem is also present in php5.2-200804222030 snap

--- simplexml.c.orig    2007-07-31 17:40:49.000000000 +0200
+++ simplexml.c 2008-04-23 00:16:00.276147006 +0200
@@ -702,11 +702,13 @@
        convert_to_string(member);
        name = Z_STRVAL_P(member);
        node = sxe_get_element_by_name(sxe, node, &name, &type 
TSRMLS_CC);
-       if (!node) {
-               sxe_prop_dim_write(object, member, NULL, 1, 0, &node 
TSRMLS_CC);
-               type = SXE_ITER_NONE;
-               name = NULL;
+       if (node) {
+               return NULL;
        }
+       sxe_prop_dim_write(object, member, NULL, 1, 0, &node 
TSRMLS_CC);
+       type = SXE_ITER_NONE;
+       name = NULL;
+
        MAKE_STD_ZVAL(return_value);
        _node_as_zval(sxe, node, return_value, type, name, sxe-
>iter.nsprefix, sxe->iter.isprefix TSRMLS_CC);


Previous Comments:
------------------------------------------------------------------------

[2008-04-22 11:29:07] aldo at armiento dot com

Description:
------------
Assigning any value to a SimpleXML attribute produces a memory leak.

Reproduce code:
---------------
<?php

$xml = new SimpleXMLElement('<?xml version="1.0"?><root><test
attribute="value"/></root>');
while(true) {
        $xml->test['attribute'] = 'value';
}

echo $xml->asXML();

?>

Expected result:
----------------
<?xml version="1.0"?>
<root><test attribute="value"/></root>

Actual result:
--------------
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to

allocate 40 bytes) in /tmp/test_simplexml.php on line 5


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=44798&edit=1

Reply via email to