Nikolay Sivov : xmllite/reader: Return correct error for multiple colons in qualified name.
Module: wine Branch: master Commit: 62a41d035c0a61d5565ab0a17d96aa0195e24adf URL: http://source.winehq.org/git/wine.git/?a=commit;h=62a41d035c0a61d5565ab0a17d... Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Fri Mar 10 11:06:41 2017 +0300 xmllite/reader: Return correct error for multiple colons in qualified name. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/xmllite/reader.c | 9 ++++++--- dlls/xmllite/tests/reader.c | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/dlls/xmllite/reader.c b/dlls/xmllite/reader.c index 056721e..c9ab4e1 100644 --- a/dlls/xmllite/reader.c +++ b/dlls/xmllite/reader.c @@ -1838,7 +1838,7 @@ static HRESULT reader_parse_dtd(xmlreader *reader) } /* [11 NS] LocalPart ::= NCName */ -static HRESULT reader_parse_local(xmlreader *reader, strval *local) +static HRESULT reader_parse_local(xmlreader *reader, strval *local, BOOL check_for_separator) { WCHAR *ptr; UINT start; @@ -1860,6 +1860,9 @@ static HRESULT reader_parse_local(xmlreader *reader, strval *local) ptr = reader_get_ptr(reader); } + if (check_for_separator && *ptr == ':') + return NC_E_QNAMECOLON; + if (is_reader_pending(reader)) { reader->resume[XmlReadResume_Local] = start; @@ -1898,7 +1901,7 @@ static HRESULT reader_parse_qname(xmlreader *reader, strval *prefix, strval *loc if (reader->resume[XmlReadResume_Local]) { - hr = reader_parse_local(reader, local); + hr = reader_parse_local(reader, local, FALSE); if (FAILED(hr)) return hr; reader_init_strvalue(reader->resume[XmlReadResume_Name], @@ -1923,7 +1926,7 @@ static HRESULT reader_parse_qname(xmlreader *reader, strval *prefix, strval *loc /* skip ':' */ reader_skipn(reader, 1); - hr = reader_parse_local(reader, local); + hr = reader_parse_local(reader, local, TRUE); if (FAILED(hr)) return hr; } else diff --git a/dlls/xmllite/tests/reader.c b/dlls/xmllite/tests/reader.c index 4318a29..a44af67 100644 --- a/dlls/xmllite/tests/reader.c +++ b/dlls/xmllite/tests/reader.c @@ -1415,6 +1415,8 @@ static struct test_entry element_tests[] = { { "<a >", "a", "", S_OK }, { "<a \r \t\n>", "a", "", S_OK }, { "</a>", NULL, NULL, NC_E_QNAMECHARACTER }, + { "<a:b:c />", NULL, NULL, NC_E_QNAMECOLON }, + { "<:b:c />", NULL, NULL, NC_E_QNAMECHARACTER }, { NULL } };
participants (1)
-
Alexandre Julliard