diff options
author | bar@mysql.com <> | 2006-03-20 14:57:34 +0400 |
---|---|---|
committer | bar@mysql.com <> | 2006-03-20 14:57:34 +0400 |
commit | 2e7cf881ace2595fb84afb643156e96016cd0793 (patch) | |
tree | f209b3c5a6738ea9d5c2ec741c26d967825e724c /sql/item_xmlfunc.cc | |
parent | 95242e71862fd121e8ef1b3a7801d94fbd89a4eb (diff) | |
download | mariadb-git-2e7cf881ace2595fb84afb643156e96016cd0793.tar.gz |
Bug #18172 XML: Extractvalue() accepts mallformed
XPath without a XPath syntax error
item_xmlfunc.cc:
Error message didn't happen because after
a failing attempt to parse RelativeLocationPath,
my_xpath_parse_AbsoluteLocationPath() returned success.
Changeing logic a bit:
- Try to parse EOF first, return success if true.
- Then try to parse RelativeLocationPath(), return success if true.
- Otherwise return failure.
xml.result:
Adding test case.
Also, this change made it possible to generate
an error message earlier in the case of another
bad XPATH syntax.
xml.test:
Adding test case.
Diffstat (limited to 'sql/item_xmlfunc.cc')
-rw-r--r-- | sql/item_xmlfunc.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sql/item_xmlfunc.cc b/sql/item_xmlfunc.cc index da39c1e4409..8e5efa9f0f5 100644 --- a/sql/item_xmlfunc.cc +++ b/sql/item_xmlfunc.cc @@ -1561,10 +1561,13 @@ static int my_xpath_parse_AbsoluteLocationPath(MY_XPATH *xpath) return my_xpath_parse_RelativeLocationPath(xpath); } + if (my_xpath_parse_term(xpath, MY_XPATH_LEX_EOF)) + return 1; + if (my_xpath_parse_RelativeLocationPath(xpath)) return 1; - return 1; + return 0; } |