mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-03-19 14:50:07 +03:00
Revert "Print error messages for truncated UTF-8 sequences"
This reverts commit 79c8a6b which caused a serious regression in streaming mode. Also reverts part of commit 52ceced "Fix infinite loops with push parser in recovery mode". Fixes bug 786554.
This commit is contained in:
parent
e29e50e54f
commit
69936b129f
2
parser.c
2
parser.c
@ -4586,7 +4586,7 @@ xmlParseCharDataComplex(xmlParserCtxtPtr ctxt, int cdata) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((ctxt->input->cur < ctxt->input->end) && (!IS_CHAR(cur))) {
|
||||
if ((cur != 0) && (!IS_CHAR(cur))) {
|
||||
/* Generate the error and skip the offending character */
|
||||
xmlFatalErrMsgInt(ctxt, XML_ERR_INVALID_CHAR,
|
||||
"PCDATA invalid Char value %d\n",
|
||||
|
@ -700,6 +700,16 @@ xmlCurrentChar(xmlParserCtxtPtr ctxt, int *len) {
|
||||
}
|
||||
return((int) *ctxt->input->cur);
|
||||
encoding_error:
|
||||
/*
|
||||
* An encoding problem may arise from a truncated input buffer
|
||||
* splitting a character in the middle. In that case do not raise
|
||||
* an error but return 0 to endicate an end of stream problem
|
||||
*/
|
||||
if (ctxt->input->end - ctxt->input->cur < 4) {
|
||||
*len = 0;
|
||||
return(0);
|
||||
}
|
||||
|
||||
/*
|
||||
* If we detect an UTF8 error that probably mean that the
|
||||
* input encoding didn't get properly advertised in the
|
||||
@ -710,21 +720,9 @@ encoding_error:
|
||||
{
|
||||
char buffer[150];
|
||||
|
||||
if (ctxt->input->cur[1] == 0) {
|
||||
snprintf(&buffer[0], 149, "Bytes: 0x%02X EOF\n",
|
||||
ctxt->input->cur[0]);
|
||||
} else if (ctxt->input->cur[2] == 0) {
|
||||
snprintf(&buffer[0], 149, "Bytes: 0x%02X 0x%02X EOF\n",
|
||||
ctxt->input->cur[0], ctxt->input->cur[1]);
|
||||
} else if (ctxt->input->cur[3] == 0) {
|
||||
snprintf(&buffer[0], 149, "Bytes: 0x%02X 0x%02X 0x%02X EOF\n",
|
||||
ctxt->input->cur[0], ctxt->input->cur[1],
|
||||
ctxt->input->cur[2]);
|
||||
} else {
|
||||
snprintf(&buffer[0], 149, "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n",
|
||||
ctxt->input->cur[0], ctxt->input->cur[1],
|
||||
ctxt->input->cur[2], ctxt->input->cur[3]);
|
||||
}
|
||||
snprintf(&buffer[0], 149, "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n",
|
||||
ctxt->input->cur[0], ctxt->input->cur[1],
|
||||
ctxt->input->cur[2], ctxt->input->cur[3]);
|
||||
__xmlErrEncoding(ctxt, XML_ERR_INVALID_CHAR,
|
||||
"Input is not proper UTF-8, indicate encoding !\n%s",
|
||||
BAD_CAST buffer, NULL);
|
||||
@ -814,6 +812,17 @@ xmlStringCurrentChar(xmlParserCtxtPtr ctxt, const xmlChar * cur, int *len)
|
||||
*len = 1;
|
||||
return ((int) *cur);
|
||||
encoding_error:
|
||||
|
||||
/*
|
||||
* An encoding problem may arise from a truncated input buffer
|
||||
* splitting a character in the middle. In that case do not raise
|
||||
* an error but return 0 to endicate an end of stream problem
|
||||
*/
|
||||
if ((ctxt == NULL) || (ctxt->input == NULL) ||
|
||||
(ctxt->input->end - ctxt->input->cur < 4)) {
|
||||
*len = 0;
|
||||
return(0);
|
||||
}
|
||||
/*
|
||||
* If we detect an UTF8 error that probably mean that the
|
||||
* input encoding didn't get properly advertised in the
|
||||
@ -824,19 +833,9 @@ encoding_error:
|
||||
{
|
||||
char buffer[150];
|
||||
|
||||
if (cur[1] == 0) {
|
||||
snprintf(&buffer[0], 149, "Bytes: 0x%02X EOF\n",
|
||||
cur[0]);
|
||||
} else if (cur[2] == 0) {
|
||||
snprintf(&buffer[0], 149, "Bytes: 0x%02X 0x%02X EOF\n",
|
||||
cur[0], cur[1]);
|
||||
} else if (cur[3] == 0) {
|
||||
snprintf(&buffer[0], 149, "Bytes: 0x%02X 0x%02X 0x%02X EOF\n",
|
||||
cur[0], cur[1], cur[2]);
|
||||
} else {
|
||||
snprintf(&buffer[0], 149, "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n",
|
||||
cur[0], cur[1], cur[2], cur[3]);
|
||||
}
|
||||
snprintf(buffer, 149, "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n",
|
||||
ctxt->input->cur[0], ctxt->input->cur[1],
|
||||
ctxt->input->cur[2], ctxt->input->cur[3]);
|
||||
__xmlErrEncoding(ctxt, XML_ERR_INVALID_CHAR,
|
||||
"Input is not proper UTF-8, indicate encoding !\n%s",
|
||||
BAD_CAST buffer, NULL);
|
||||
|
@ -1,7 +0,0 @@
|
||||
./test/errors/partial_utf8_1.xml:1: parser error : Input is not proper UTF-8, indicate encoding !
|
||||
Bytes: 0xC2 EOF
|
||||
<a>Â
|
||||
^
|
||||
./test/errors/partial_utf8_1.xml:1: parser error : Premature end of data in tag a line 1
|
||||
<a>Â
|
||||
^
|
@ -1,4 +0,0 @@
|
||||
./test/errors/partial_utf8_1.xml:1: parser error : Extra content at the end of the document
|
||||
<a>Â
|
||||
^
|
||||
./test/errors/partial_utf8_1.xml : failed to parse
|
@ -1,7 +0,0 @@
|
||||
./test/errors/partial_utf8_2.xml:1: parser error : Input is not proper UTF-8, indicate encoding !
|
||||
Bytes: 0xE3 0xA0 EOF
|
||||
<a>ã
|
||||
^
|
||||
./test/errors/partial_utf8_2.xml:1: parser error : Premature end of data in tag a line 1
|
||||
<a>ã
|
||||
^
|
@ -1,5 +0,0 @@
|
||||
./test/errors/partial_utf8_2.xml:1: parser error : Input is not proper UTF-8, indicate encoding !
|
||||
Bytes: 0xE3 0xA0 EOF
|
||||
<a>ã
|
||||
^
|
||||
./test/errors/partial_utf8_2.xml : failed to parse
|
@ -1,7 +0,0 @@
|
||||
./test/errors/partial_utf8_3.xml:1: parser error : Input is not proper UTF-8, indicate encoding !
|
||||
Bytes: 0xF2 0xA0 0xA0 EOF
|
||||
<a>ò
|
||||
^
|
||||
./test/errors/partial_utf8_3.xml:1: parser error : Premature end of data in tag a line 1
|
||||
<a>ò
|
||||
^
|
@ -1,5 +0,0 @@
|
||||
./test/errors/partial_utf8_3.xml:1: parser error : Input is not proper UTF-8, indicate encoding !
|
||||
Bytes: 0xF2 0xA0 0xA0 EOF
|
||||
<a>ò
|
||||
^
|
||||
./test/errors/partial_utf8_3.xml : failed to parse
|
@ -1 +0,0 @@
|
||||
<a>Â
|
@ -1 +0,0 @@
|
||||
<a>ã
|
@ -1 +0,0 @@
|
||||
<a>ò
|
Loading…
x
Reference in New Issue
Block a user