summaryrefslogtreecommitdiff
path: root/ext/dom/element.c
diff options
context:
space:
mode:
authorRob Richards <rrichards@php.net>2004-05-27 11:15:45 +0000
committerRob Richards <rrichards@php.net>2004-05-27 11:15:45 +0000
commitedae935c266fe883a0adeff005d843b70eb2ea66 (patch)
tree31bf44fac6441b22935cb0b71e9d45173f6c44b9 /ext/dom/element.c
parent7f887852a64875722f96eeb549b337f94500d739 (diff)
downloadphp-git-edae935c266fe883a0adeff005d843b70eb2ea66.tar.gz
namespace/tagname validation fixes (Adam Trachtenberg)
added new test
Diffstat (limited to 'ext/dom/element.c')
-rw-r--r--ext/dom/element.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/ext/dom/element.c b/ext/dom/element.c
index c817a3c01e..57ad3003e7 100644
--- a/ext/dom/element.c
+++ b/ext/dom/element.c
@@ -58,7 +58,7 @@ zend_function_entry php_dom_element_class_functions[] = {
{NULL, NULL, NULL}
};
-/* {{{ proto void DomElement::__construct(string name, [string value]); */
+/* {{{ proto void DomElement::__construct(string name, [string value], [string uri]); */
PHP_METHOD(domelement, __construct)
{
@@ -106,6 +106,14 @@ PHP_METHOD(domelement, __construct)
RETURN_FALSE;
}
} else {
+ /* If you don't pass a namespace uri, then you can't set a prefix */
+ localname = xmlSplitQName2(name, (xmlChar **) &prefix);
+ if (prefix != NULL) {
+ xmlFree(localname);
+ xmlFree(prefix);
+ php_dom_throw_error(NAMESPACE_ERR, 1 TSRMLS_CC);
+ RETURN_FALSE;
+ }
nodep = xmlNewNode(NULL, (xmlChar *) name);
}