mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-07-28 00:21:53 +03:00
fixed xmlFAParseCharRange for Unicode ranges with patch from Charles
* xmlregexp.c: fixed xmlFAParseCharRange for Unicode ranges with patch from Charles Bozeman.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
Sat Dec 27 09:53:06 HKT 2003 William Brack <wbrack@mmm.com.hk>
|
||||||
|
|
||||||
|
* xmlregexp.c: fixed xmlFAParseCharRange for Unicode ranges
|
||||||
|
with patch from Charles Bozeman.
|
||||||
|
|
||||||
Fri Dec 26 14:03:41 HKT 2003 William Brack <wbrack@mmm.com.hk>
|
Fri Dec 26 14:03:41 HKT 2003 William Brack <wbrack@mmm.com.hk>
|
||||||
|
|
||||||
* xmlregexp.c: fixed problem causing segfault on validation error
|
* xmlregexp.c: fixed problem causing segfault on validation error
|
||||||
|
12
xmlregexp.c
12
xmlregexp.c
@ -3533,7 +3533,7 @@ xmlFAParseCharRef(xmlRegParserCtxtPtr ctxt) {
|
|||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
xmlFAParseCharRange(xmlRegParserCtxtPtr ctxt) {
|
xmlFAParseCharRange(xmlRegParserCtxtPtr ctxt) {
|
||||||
int cur;
|
int cur, len;
|
||||||
int start = -1;
|
int start = -1;
|
||||||
int end = -1;
|
int end = -1;
|
||||||
|
|
||||||
@ -3560,13 +3560,14 @@ xmlFAParseCharRange(xmlRegParserCtxtPtr ctxt) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
end = start;
|
end = start;
|
||||||
|
len = 1;
|
||||||
} else if ((cur != 0x5B) && (cur != 0x5D)) {
|
} else if ((cur != 0x5B) && (cur != 0x5D)) {
|
||||||
end = start = cur;
|
end = start = CUR_SCHAR(ctxt->cur, len);
|
||||||
} else {
|
} else {
|
||||||
ERROR("Expecting a char range");
|
ERROR("Expecting a char range");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
NEXT;
|
NEXTL(len);
|
||||||
if (start == '-') {
|
if (start == '-') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -3593,13 +3594,14 @@ xmlFAParseCharRange(xmlRegParserCtxtPtr ctxt) {
|
|||||||
ERROR("Invalid escape value");
|
ERROR("Invalid escape value");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
len = 1;
|
||||||
} else if ((cur != 0x5B) && (cur != 0x5D)) {
|
} else if ((cur != 0x5B) && (cur != 0x5D)) {
|
||||||
end = cur;
|
end = CUR_SCHAR(ctxt->cur, len);
|
||||||
} else {
|
} else {
|
||||||
ERROR("Expecting the end of a char range");
|
ERROR("Expecting the end of a char range");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
NEXT;
|
NEXTL(len);
|
||||||
/* TODO check that the values are acceptable character ranges for XML */
|
/* TODO check that the values are acceptable character ranges for XML */
|
||||||
if (end < start) {
|
if (end < start) {
|
||||||
ERROR("End of range is before start of range");
|
ERROR("End of range is before start of range");
|
||||||
|
Reference in New Issue
Block a user