diff options
author | Rob Richards <rrichards@php.net> | 2004-05-27 11:15:45 +0000 |
---|---|---|
committer | Rob Richards <rrichards@php.net> | 2004-05-27 11:15:45 +0000 |
commit | edae935c266fe883a0adeff005d843b70eb2ea66 (patch) | |
tree | 31bf44fac6441b22935cb0b71e9d45173f6c44b9 /ext/dom/element.c | |
parent | 7f887852a64875722f96eeb549b337f94500d739 (diff) | |
download | php-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.c | 10 |
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); } |