cvs: php-src(PHP_5_2) /ext/dom dom_iterators.c
| From: | Ilia Alshanetsky | Date: | Sat, 07 Oct 2006 19:59:19 +0000 |
| Subject: | cvs: php-src(PHP_5_2) /ext/dom dom_iterators.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-40994@lists.php.net to get a copy of this message | ||
iliaa Sat Oct 7 19:59:19 2006 UTC
Modified files: (Branch: PHP_5_2)
/php-src/ext/dom dom_iterators.c
Log:
Added missing safety checks (Problem identified by Coverity scan)
http://cvs.php.net/viewvc.cgi/php-src/ext/dom/dom_iterators.c?r1=1.9.2.3.2.3&r2=1.9.2.3.2.4&diff_format=u
Index: php-src/ext/dom/dom_iterators.c
diff -u php-src/ext/dom/dom_iterators.c:1.9.2.3.2.3 php-src/ext/dom/dom_iterators.c:1.9.2.3.2.4
--- php-src/ext/dom/dom_iterators.c:1.9.2.3.2.3 Wed May 17 16:35:50 2006
+++ php-src/ext/dom/dom_iterators.c Sat Oct 7 19:59:19 2006
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dom_iterators.c,v 1.9.2.3.2.3 2006/05/17 16:35:50 rrichards Exp $ */
+/* $Id: dom_iterators.c,v 1.9.2.3.2.4 2006/10/07 19:59:19 iliaa Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -170,6 +170,8 @@
intern = (dom_object *)zend_object_store_get_object(curobj TSRMLS_CC);
if (intern != NULL && intern->ptr != NULL) {
curnode = (xmlNodePtr)((php_libxml_node_ptr *)intern->ptr)->node;
+ } else {
+ return HASH_KEY_NON_EXISTANT;
}
namelen = xmlStrlen(curnode->name);
@@ -220,8 +222,10 @@
if (basenode && (basenode->type == XML_DOCUMENT_NODE ||
basenode->type == XML_HTML_DOCUMENT_NODE)) {
basenode = xmlDocGetRootElement((xmlDoc *) basenode);
- } else {
+ } else if (basenode) {
basenode = basenode->children;
+ } else {
+ goto err;
}
curnode = dom_get_elements_by_tag_name_ns_raw(basenode, objmap->ns, objmap->local,
&previndex, iter->index);
}
@@ -234,7 +238,7 @@
}
}
}
-
+err:
zval_ptr_dtor((zval**)&curobj);
if (curnode) {
MAKE_STD_ZVAL(curattr);
@@ -287,6 +291,9 @@
}
} else {
nodep = (xmlNode *)dom_object_get_node(objmap->baseobj);
+ if (!nodep) {
+ goto err;
+ }
if (objmap->nodetype == XML_ATTRIBUTE_NODE || objmap->nodetype == XML_ELEMENT_NODE) {
if (objmap->nodetype == XML_ATTRIBUTE_NODE) {
curnode = (xmlNodePtr) nodep->properties;
@@ -310,7 +317,7 @@
}
}
}
-
+err:
if (curnode) {
MAKE_STD_ZVAL(curattr);
curattr = php_dom_create_object(curnode, &ret, NULL, curattr, objmap->baseobj TSRMLS_CC);