diff options
author | Sterling Hughes <sterling@php.net> | 2003-06-05 18:54:25 +0000 |
---|---|---|
committer | Sterling Hughes <sterling@php.net> | 2003-06-05 18:54:25 +0000 |
commit | ee5f79487ee282c394b8a418d3c993ec8e6a4279 (patch) | |
tree | 8234807639aa8741f83d7f01dfa3c7df6bf977a1 | |
parent | 3ebf297261b3033689e7956eb0edfc5a9fe99e15 (diff) | |
download | php-git-ee5f79487ee282c394b8a418d3c993ec8e6a4279.tar.gz |
fix a bunch of memory overruns, and uninitialized variable uses
fixes crash on sample script rob sent me
-rw-r--r-- | ext/dom/element.c | 2 | ||||
-rw-r--r-- | ext/dom/node.c | 4 | ||||
-rw-r--r-- | ext/dom/php_dom.c | 2 |
3 files changed, 7 insertions, 1 deletions
diff --git a/ext/dom/element.c b/ext/dom/element.c index 96ce2139d9..4717465cf7 100644 --- a/ext/dom/element.c +++ b/ext/dom/element.c @@ -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(); diff --git a/ext/dom/node.c b/ext/dom/node.c index 8b9ab306cf..e200d91416 100644 --- a/ext/dom/node.c +++ b/ext/dom/node.c @@ -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) { diff --git a/ext/dom/php_dom.c b/ext/dom/php_dom.c index bbccaf0521..6c4890bf4a 100644 --- a/ext/dom/php_dom.c +++ b/ext/dom/php_dom.c @@ -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: |