diff options
author | David Kilzer <ddkilzer@apple.com> | 2023-04-10 13:06:18 -0700 |
---|---|---|
committer | David Kilzer <ddkilzer@apple.com> | 2023-04-10 13:21:53 -0700 |
commit | cb1b8b8516ade9add9f63fa0e39eaa3bc7034828 (patch) | |
tree | 82ba91e92d7b79cbf2fb9e9510c6b43f18c796f8 | |
parent | d7d0bc6581e332f49c9ff628f548eced03c65189 (diff) | |
download | libxml2-cb1b8b8516ade9add9f63fa0e39eaa3bc7034828.tar.gz |
xmlValidatePopElement() can return invalid value (-1)
Covered by: test/VC/ElementValid5
This only affects XML Reader API with LIBXML_REGEXP_ENABLED and
LIBXML_VALID_ENABLED turned on.
* result/VC/ElementValid5.rdr:
- Update result to add missing error message.
* python/tests/reader2.py:
* result/VC/ElementValid6.rdr:
* result/VC/ElementValid7.rdr:
* result/valid/781333.xml.err.rdr:
- Update result to fix grammar issue.
* valid.c:
(xmlValidatePopElement):
- Check return value of xmlRegExecPushString() to handle -1, and
assign 'ret = 0;' to return 0 from xmlValidatePopElement().
This change affects xmlTextReaderValidatePop() from
xmlreader.c.
- Fix grammar of error message by changing 'child' to
'children'.
-rwxr-xr-x | python/tests/reader2.py | 2 | ||||
-rw-r--r-- | result/VC/ElementValid5.rdr | 3 | ||||
-rw-r--r-- | result/VC/ElementValid6.rdr | 2 | ||||
-rw-r--r-- | result/VC/ElementValid7.rdr | 2 | ||||
-rw-r--r-- | result/valid/781333.xml.err.rdr | 2 | ||||
-rw-r--r-- | valid.c | 5 |
6 files changed, 10 insertions, 6 deletions
diff --git a/python/tests/reader2.py b/python/tests/reader2.py index 802d848d..9d3b7065 100755 --- a/python/tests/reader2.py +++ b/python/tests/reader2.py @@ -41,7 +41,7 @@ value """{0}/781333.xml:4: element a: validity error : Element a content does not follow the DTD, expecting ( ..., got <a/> ^ -{0}/781333.xml:5: element a: validity error : Element a content does not follow the DTD, Expecting more child +{0}/781333.xml:5: element a: validity error : Element a content does not follow the DTD, Expecting more children ^ """.format(dir_prefix), diff --git a/result/VC/ElementValid5.rdr b/result/VC/ElementValid5.rdr index 899d7591..91eef9c6 100644 --- a/result/VC/ElementValid5.rdr +++ b/result/VC/ElementValid5.rdr @@ -4,3 +4,6 @@ ./test/VC/ElementValid5:8: element doc: validity error : Element doc content does not follow the DTD, Misplaced b ^ +./test/VC/ElementValid5:8: element doc: validity error : Element doc content does not follow the DTD, Expecting more children + +^ diff --git a/result/VC/ElementValid6.rdr b/result/VC/ElementValid6.rdr index aeafd6be..3b51d1a1 100644 --- a/result/VC/ElementValid6.rdr +++ b/result/VC/ElementValid6.rdr @@ -1,6 +1,6 @@ ./test/VC/ElementValid6:7: element doc: validity error : Element doc content does not follow the DTD, expecting (a , b? , c+)?, got (a b) <doc><a/><b>lacks c</b></doc> ^ -./test/VC/ElementValid6:8: element doc: validity error : Element doc content does not follow the DTD, Expecting more child +./test/VC/ElementValid6:8: element doc: validity error : Element doc content does not follow the DTD, Expecting more children ^ diff --git a/result/VC/ElementValid7.rdr b/result/VC/ElementValid7.rdr index f001fd21..ecafd1db 100644 --- a/result/VC/ElementValid7.rdr +++ b/result/VC/ElementValid7.rdr @@ -1,6 +1,6 @@ ./test/VC/ElementValid7:7: element doc: validity error : Element doc content does not follow the DTD, expecting ((a | b)* , c+ , a , b? , c , a?), got (a b a c c a) <doc><a/><b/><a/><c/><c/><a/></doc> ^ -./test/VC/ElementValid7:8: element doc: validity error : Element doc content does not follow the DTD, Expecting more child +./test/VC/ElementValid7:8: element doc: validity error : Element doc content does not follow the DTD, Expecting more children ^ diff --git a/result/valid/781333.xml.err.rdr b/result/valid/781333.xml.err.rdr index 5ff56992..dd9df08f 100644 --- a/result/valid/781333.xml.err.rdr +++ b/result/valid/781333.xml.err.rdr @@ -1,6 +1,6 @@ ./test/valid/781333.xml:4: element a: validity error : Element a content does not follow the DTD, expecting ( ..., got <a/> ^ -./test/valid/781333.xml:5: element a: validity error : Element a content does not follow the DTD, Expecting more child +./test/valid/781333.xml:5: element a: validity error : Element a content does not follow the DTD, Expecting more children ^ @@ -5999,11 +5999,12 @@ xmlValidatePopElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc ATTRIBUTE_UNUSED, if (elemDecl->etype == XML_ELEMENT_TYPE_ELEMENT) { if (state->exec != NULL) { ret = xmlRegExecPushString(state->exec, NULL, NULL); - if (ret == 0) { + if (ret <= 0) { xmlErrValidNode(ctxt, state->node, XML_DTD_CONTENT_MODEL, - "Element %s content does not follow the DTD, Expecting more child\n", + "Element %s content does not follow the DTD, Expecting more children\n", state->node->name, NULL,NULL); + ret = 0; } else { /* * previous validation errors should not generate |