diff options
author | Alexander Barkov <bar@mysql.com> | 2008-12-10 13:05:57 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mysql.com> | 2008-12-10 13:05:57 +0400 |
commit | f5a850109afea58f5b04af3d4b3703466a5a122c (patch) | |
tree | faad7ef64c45f044551b4dd6bfa03f73bb1cdf05 /mysql-test/t/xml.test | |
parent | 500810d8c99b05f43c2058d820bb17b6b477f50e (diff) | |
download | mariadb-git-f5a850109afea58f5b04af3d4b3703466a5a122c.tar.gz |
Bug#38227 EXTRACTVALUE doesn't work with DTD declarations
Problem:
XML syntax parser allowed to use quoted strings as attribute names,
and tried to put them into parser state stack instead of identifiers.
After that parser failed, if quoted string contained some slash characters.
Fix:
- Disallowing quoted strings in regular tags.
- Allowing quoted string in DOCTYPE declararion, but
don't push it into parse state stack (just skip it).
Diffstat (limited to 'mysql-test/t/xml.test')
-rw-r--r-- | mysql-test/t/xml.test | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/mysql-test/t/xml.test b/mysql-test/t/xml.test index 5ca9c7afd76..d840e14ba5f 100644 --- a/mysql-test/t/xml.test +++ b/mysql-test/t/xml.test @@ -551,4 +551,29 @@ INSERT INTO t1 VALUES (0), (0); SELECT 1 FROM t1 ORDER BY(UPDATEXML(a, '1', '1')); DROP TABLE t1; +# +# BUG#38227 EXTRACTVALUE doesn't work with DTD declarations +# +# Check that quoted strings work fine in DOCTYPE declaration. +# + +SET @xml= +'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <title> Title - document with document declaration</title> + </head> + <body> Hi, Im a webpage with document a declaration </body> +</html>'; + +SELECT ExtractValue(@xml, 'html/head/title'); +SELECT ExtractValue(@xml, 'html/body'); + +# These two documents will fail. +# Quoted strings are not allowed in regular tags +# +SELECT ExtractValue('<xml "xxx" "yyy">CharData</xml>', '/xml'); +SELECT ExtractValue('<xml xxx "yyy">CharData</xml>', '/xml'); + + --echo End of 5.1 tests |