iliaa Sat Oct 7 19:59:30 2006 UTC Modified files: /php-src/ext/dom dom_iterators.c Log: MFB: Added missing safety checks (Problem identified by Coverity scan) http://cvs.php.net/viewvc.cgi/php-src/ext/dom/dom_iterators.c?r1=1.17&r2=1.18&diff_format=u Index: php-src/ext/dom/dom_iterators.c diff -u php-src/ext/dom/dom_iterators.c:1.17 php-src/ext/dom/dom_iterators.c:1.18 --- php-src/ext/dom/dom_iterators.c:1.17 Fri Mar 3 20:13:12 2006 +++ php-src/ext/dom/dom_iterators.c Sat Oct 7 19:59:29 2006 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dom_iterators.c,v 1.17 2006/03/03 20:13:12 rrichards Exp $ */ +/* $Id: dom_iterators.c,v 1.18 2006/10/07 19:59:29 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); @@ -288,6 +292,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; @@ -311,7 +318,7 @@ } } } - +err: if (curnode) { MAKE_STD_ZVAL(curattr); curattr = php_dom_create_object(curnode, &ret, NULL, curattr, objmap->baseobj TSRMLS_CC);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php