summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Wallner <mike@php.net>2006-02-24 10:19:54 +0000
committerMichael Wallner <mike@php.net>2006-02-24 10:19:54 +0000
commit6520ff9afca625a7b9d9fb00acd1f816a54dabde (patch)
treea0870f009dc5084d07c8979181aaadace2465a46
parent521502f416efc037ceeec33c29738c278048954b (diff)
downloadphp-git-6520ff9afca625a7b9d9fb00acd1f816a54dabde.tar.gz
- fix crash with DOMImplementation::createDocumentType("name:")
-rw-r--r--NEWS1
-rw-r--r--ext/dom/domimplementation.c6
2 files changed, 5 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index d4c778fc1b..8f4d8992df 100644
--- a/NEWS
+++ b/NEWS
@@ -26,6 +26,7 @@ PHP NEWS
(Mike)
- Fixed tiger hash algorithm generating wrong results on big endian platforms.
(Mike)
+- Fixed crash with DOMImplementation::createDocumentType("name:"). (Mike)
- Fixed bug #36458 (sleep() accepts negative values). (Ilia)
- Fixed bug #36436 (DBA problem with Berkeley DB4). (Marcus)
- Fixed bug #36434 (Improper resolution of declaring class name of an inherited
diff --git a/ext/dom/domimplementation.c b/ext/dom/domimplementation.c
index aa371f8154..f65da0572b 100644
--- a/ext/dom/domimplementation.c
+++ b/ext/dom/domimplementation.c
@@ -92,7 +92,7 @@ PHP_METHOD(domimplementation, createDocumentType)
pch2 = systemid;
uri = xmlParseURI(name);
- if (uri->opaque != NULL) {
+ if (uri != NULL && uri->opaque != NULL) {
localname = xmlStrdup(uri->opaque);
if (xmlStrchr(localname, (xmlChar) ':') != NULL) {
php_dom_throw_error(NAMESPACE_ERR, 1 TSRMLS_CC);
@@ -108,7 +108,9 @@ PHP_METHOD(domimplementation, createDocumentType)
php_dom_throw_error(INVALID_CHARACTER_ERR, TSRMLS_CC);
*/
- xmlFreeURI(uri);
+ if (uri) {
+ xmlFreeURI(uri);
+ }
doctype = xmlCreateIntSubset(NULL, localname, pch1, pch2);
xmlFree(localname);