summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSterling Hughes <sterling@php.net>2003-06-05 18:54:25 +0000
committerSterling Hughes <sterling@php.net>2003-06-05 18:54:25 +0000
commitee5f79487ee282c394b8a418d3c993ec8e6a4279 (patch)
tree8234807639aa8741f83d7f01dfa3c7df6bf977a1
parent3ebf297261b3033689e7956eb0edfc5a9fe99e15 (diff)
downloadphp-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.c2
-rw-r--r--ext/dom/node.c4
-rw-r--r--ext/dom/php_dom.c2
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: