#62157, "Document content is rendered even though version value is not '1.0'." Make us care about what version is specified and bail out on anything but "1.0".

r=bzbarsky, sr=heikki, a=asa
This commit is contained in:
hwaara%chello.se 2002-07-20 01:18:52 +00:00
Родитель 13d35d59eb
Коммит 52d72e9998
2 изменённых файлов: 28 добавлений и 6 удалений

Просмотреть файл

@ -993,6 +993,10 @@ static const char KW_version[] = {
ASCII_v, ASCII_e, ASCII_r, ASCII_s, ASCII_i, ASCII_o, ASCII_n, '\0'
};
static const char KW_XML_1_0[] = {
ASCII_1, ASCII_PERIOD, ASCII_0, '\0'
};
static const char KW_encoding[] = {
ASCII_e, ASCII_n, ASCII_c, ASCII_o, ASCII_d, ASCII_i, ASCII_n, ASCII_g, '\0'
};
@ -1040,16 +1044,23 @@ int doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *,
}
else {
if (versionPtr)
{
*versionPtr = val;
/* Anything else but a version="1.0" is invalid for us, until we support later versions. */
if (!XmlNameMatchesAscii(enc, *versionPtr, ptr - enc->minBytesPerChar, KW_XML_1_0)) {
*badPtr = *versionPtr;
return 0;
}
}
if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) {
*badPtr = ptr;
return 0;
}
if (!name) {
if (isGeneralTextEntity) {
/* a TextDecl must have an EncodingDecl */
*badPtr = ptr;
return 0;
/* a TextDecl must have an EncodingDecl */
*badPtr = ptr;
return 0;
}
return 1;
}

Просмотреть файл

@ -993,6 +993,10 @@ static const char KW_version[] = {
ASCII_v, ASCII_e, ASCII_r, ASCII_s, ASCII_i, ASCII_o, ASCII_n, '\0'
};
static const char KW_XML_1_0[] = {
ASCII_1, ASCII_PERIOD, ASCII_0, '\0'
};
static const char KW_encoding[] = {
ASCII_e, ASCII_n, ASCII_c, ASCII_o, ASCII_d, ASCII_i, ASCII_n, ASCII_g, '\0'
};
@ -1040,16 +1044,23 @@ int doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *,
}
else {
if (versionPtr)
{
*versionPtr = val;
/* Anything else but a version="1.0" is invalid for us, until we support later versions. */
if (!XmlNameMatchesAscii(enc, *versionPtr, ptr - enc->minBytesPerChar, KW_XML_1_0)) {
*badPtr = *versionPtr;
return 0;
}
}
if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) {
*badPtr = ptr;
return 0;
}
if (!name) {
if (isGeneralTextEntity) {
/* a TextDecl must have an EncodingDecl */
*badPtr = ptr;
return 0;
/* a TextDecl must have an EncodingDecl */
*badPtr = ptr;
return 0;
}
return 1;
}