]> granicus.if.org Git - php/commitdiff
fix a bunch of memory overruns, and uninitialized variable uses
authorSterling Hughes <sterling@php.net>
Thu, 5 Jun 2003 18:54:25 +0000 (18:54 +0000)
committerSterling Hughes <sterling@php.net>
Thu, 5 Jun 2003 18:54:25 +0000 (18:54 +0000)
fixes crash on sample script rob sent me

ext/dom/element.c
ext/dom/node.c
ext/dom/php_dom.c

index 96ce2139d9b535e47a33f6ef5b312e2aeba3744e..4717465cf7522c35954962e7218c519620571623 100644 (file)
@@ -65,7 +65,7 @@ PHP_FUNCTION(dom_element_element)
        xmlNodePtr nodep = NULL, oldnode = NULL;
        dom_object *intern;
        char *name, *value = NULL;
-       int name_len, value_len;
+       int name_len, value_len = 0;
 
        id = getThis();
        
index 8b9ab306cf4059d6714ff254354ff9c080370b76..e200d91416d5e49bbfe989c5cbfeccf44834b7fe 100644 (file)
@@ -982,6 +982,10 @@ PHP_FUNCTION(dom_node_append_child)
                return;
        }
 
+       if (!PZVAL_IS_REF(node)) {
+               zval_add_ref(&node);
+       }
+       
        DOM_GET_OBJ(child, node, xmlNodePtr);
 
        if (dom_hierarchy(nodep, child) == FAILURE) {
index bbccaf05211a68cb751719ce237af42920f4466c..6c4890bf4a325603ec59cbb7df0c68322104f763 100644 (file)
@@ -698,9 +698,11 @@ void node_free_resource(xmlNodePtr node TSRMLS_DC)
 {
        xmlDtdPtr extSubset, intSubset;
        xmlDocPtr docp;
+
        if (!node) {
                return;
        }
+
        switch (node->type) {
                case XML_DOCUMENT_NODE:
                case XML_HTML_DOCUMENT_NODE: