aboutsummaryrefslogtreecommitdiffstats
path: root/valid.c
diff options
context:
space:
mode:
authorDaniel Veillard <veillard@src.gnome.org>2002-01-13 15:43:22 +0000
committerDaniel Veillard <veillard@src.gnome.org>2002-01-13 15:43:22 +0000
commitd8224e0f7ee96b6835905e2a5a8a010f4bc270ed (patch)
tree4ed11542142f60acf845fac02fdc616f5dda7995 /valid.c
parent8107a22f962b66f0e9bcc04e53874992e44a3917 (diff)
downloadandroid_external_libxml2-d8224e0f7ee96b6835905e2a5a8a010f4bc270ed.tar.gz
android_external_libxml2-d8224e0f7ee96b6835905e2a5a8a010f4bc270ed.tar.bz2
android_external_libxml2-d8224e0f7ee96b6835905e2a5a8a010f4bc270ed.zip
fixed validation of attributes content of type NAME NAMES NMTOKEN and
* valid.c: fixed validation of attributes content of type NAME NAMES NMTOKEN and NMTOKENS to accept internationalized values, very old bug. Fixes #67671 Daniel
Diffstat (limited to 'valid.c')
-rw-r--r--valid.c181
1 files changed, 110 insertions, 71 deletions
diff --git a/valid.c b/valid.c
index 24ce16aa..55c7b9e2 100644
--- a/valid.c
+++ b/valid.c
@@ -2565,23 +2565,29 @@ xmlIsMixedElement(xmlDocPtr doc, const xmlChar *name) {
static int
xmlValidateNameValue(const xmlChar *value) {
const xmlChar *cur;
+ int val, len;
if (value == NULL) return(0);
cur = value;
-
- if (!IS_LETTER(*cur) && (*cur != '_') &&
- (*cur != ':')) {
+ val = xmlStringCurrentChar(NULL, cur, &len);
+ cur += len;
+ if (!IS_LETTER(val) && (val != '_') &&
+ (val != ':')) {
return(0);
}
- while ((IS_LETTER(*cur)) || (IS_DIGIT(*cur)) ||
- (*cur == '.') || (*cur == '-') ||
- (*cur == '_') || (*cur == ':') ||
- (IS_COMBINING(*cur)) ||
- (IS_EXTENDER(*cur)))
- cur++;
+ val = xmlStringCurrentChar(NULL, cur, &len);
+ cur += len;
+ while ((IS_LETTER(val)) || (IS_DIGIT(val)) ||
+ (val == '.') || (val == '-') ||
+ (val == '_') || (val == ':') ||
+ (IS_COMBINING(val)) ||
+ (IS_EXTENDER(val))) {
+ val = xmlStringCurrentChar(NULL, cur, &len);
+ cur += len;
+ }
- if (*cur != 0) return(0);
+ if (val != 0) return(0);
return(1);
}
@@ -2598,39 +2604,53 @@ xmlValidateNameValue(const xmlChar *value) {
static int
xmlValidateNamesValue(const xmlChar *value) {
const xmlChar *cur;
+ int val, len;
if (value == NULL) return(0);
cur = value;
+ val = xmlStringCurrentChar(NULL, cur, &len);
+ cur += len;
- if (!IS_LETTER(*cur) && (*cur != '_') &&
- (*cur != ':')) {
+ if (!IS_LETTER(val) && (val != '_') &&
+ (val != ':')) {
return(0);
}
- while ((IS_LETTER(*cur)) || (IS_DIGIT(*cur)) ||
- (*cur == '.') || (*cur == '-') ||
- (*cur == '_') || (*cur == ':') ||
- (IS_COMBINING(*cur)) ||
- (IS_EXTENDER(*cur)))
- cur++;
+ val = xmlStringCurrentChar(NULL, cur, &len);
+ cur += len;
+ while ((IS_LETTER(val)) || (IS_DIGIT(val)) ||
+ (val == '.') || (val == '-') ||
+ (val == '_') || (val == ':') ||
+ (IS_COMBINING(val)) ||
+ (IS_EXTENDER(val))) {
+ val = xmlStringCurrentChar(NULL, cur, &len);
+ cur += len;
+ }
- while (IS_BLANK(*cur)) {
- while (IS_BLANK(*cur)) cur++;
+ while (IS_BLANK(val)) {
+ while (IS_BLANK(val)) {
+ val = xmlStringCurrentChar(NULL, cur, &len);
+ cur += len;
+ }
- if (!IS_LETTER(*cur) && (*cur != '_') &&
- (*cur != ':')) {
+ if (!IS_LETTER(val) && (val != '_') &&
+ (val != ':')) {
return(0);
}
-
- while ((IS_LETTER(*cur)) || (IS_DIGIT(*cur)) ||
- (*cur == '.') || (*cur == '-') ||
- (*cur == '_') || (*cur == ':') ||
- (IS_COMBINING(*cur)) ||
- (IS_EXTENDER(*cur)))
- cur++;
+ val = xmlStringCurrentChar(NULL, cur, &len);
+ cur += len;
+
+ while ((IS_LETTER(val)) || (IS_DIGIT(val)) ||
+ (val == '.') || (val == '-') ||
+ (val == '_') || (val == ':') ||
+ (IS_COMBINING(val)) ||
+ (IS_EXTENDER(val))) {
+ val = xmlStringCurrentChar(NULL, cur, &len);
+ cur += len;
+ }
}
- if (*cur != 0) return(0);
+ if (val != 0) return(0);
return(1);
}
@@ -2649,25 +2669,30 @@ xmlValidateNamesValue(const xmlChar *value) {
static int
xmlValidateNmtokenValue(const xmlChar *value) {
const xmlChar *cur;
+ int val, len;
if (value == NULL) return(0);
cur = value;
+ val = xmlStringCurrentChar(NULL, cur, &len);
+ cur += len;
- if (!IS_LETTER(*cur) && !IS_DIGIT(*cur) &&
- (*cur != '.') && (*cur != '-') &&
- (*cur != '_') && (*cur != ':') &&
- (!IS_COMBINING(*cur)) &&
- (!IS_EXTENDER(*cur)))
+ if (!IS_LETTER(val) && !IS_DIGIT(val) &&
+ (val != '.') && (val != '-') &&
+ (val != '_') && (val != ':') &&
+ (!IS_COMBINING(val)) &&
+ (!IS_EXTENDER(val)))
return(0);
- while ((IS_LETTER(*cur)) || (IS_DIGIT(*cur)) ||
- (*cur == '.') || (*cur == '-') ||
- (*cur == '_') || (*cur == ':') ||
- (IS_COMBINING(*cur)) ||
- (IS_EXTENDER(*cur)))
- cur++;
+ while ((IS_LETTER(val)) || (IS_DIGIT(val)) ||
+ (val == '.') || (val == '-') ||
+ (val == '_') || (val == ':') ||
+ (IS_COMBINING(val)) ||
+ (IS_EXTENDER(val))) {
+ val = xmlStringCurrentChar(NULL, cur, &len);
+ cur += len;
+ }
- if (*cur != 0) return(0);
+ if (val != 0) return(0);
return(1);
}
@@ -2686,45 +2711,59 @@ xmlValidateNmtokenValue(const xmlChar *value) {
static int
xmlValidateNmtokensValue(const xmlChar *value) {
const xmlChar *cur;
+ int val, len;
if (value == NULL) return(0);
cur = value;
+ val = xmlStringCurrentChar(NULL, cur, &len);
+ cur += len;
- while (IS_BLANK(*cur)) cur++;
- if (!IS_LETTER(*cur) && !IS_DIGIT(*cur) &&
- (*cur != '.') && (*cur != '-') &&
- (*cur != '_') && (*cur != ':') &&
- (!IS_COMBINING(*cur)) &&
- (!IS_EXTENDER(*cur)))
+ while (IS_BLANK(val)) {
+ val = xmlStringCurrentChar(NULL, cur, &len);
+ cur += len;
+ }
+
+ if (!IS_LETTER(val) && !IS_DIGIT(val) &&
+ (val != '.') && (val != '-') &&
+ (val != '_') && (val != ':') &&
+ (!IS_COMBINING(val)) &&
+ (!IS_EXTENDER(val)))
return(0);
- while ((IS_LETTER(*cur)) || (IS_DIGIT(*cur)) ||
- (*cur == '.') || (*cur == '-') ||
- (*cur == '_') || (*cur == ':') ||
- (IS_COMBINING(*cur)) ||
- (IS_EXTENDER(*cur)))
- cur++;
-
- while (IS_BLANK(*cur)) {
- while (IS_BLANK(*cur)) cur++;
- if (*cur == 0) return(1);
-
- if (!IS_LETTER(*cur) && !IS_DIGIT(*cur) &&
- (*cur != '.') && (*cur != '-') &&
- (*cur != '_') && (*cur != ':') &&
- (!IS_COMBINING(*cur)) &&
- (!IS_EXTENDER(*cur)))
+ while ((IS_LETTER(val)) || (IS_DIGIT(val)) ||
+ (val == '.') || (val == '-') ||
+ (val == '_') || (val == ':') ||
+ (IS_COMBINING(val)) ||
+ (IS_EXTENDER(val))) {
+ val = xmlStringCurrentChar(NULL, cur, &len);
+ cur += len;
+ }
+
+ while (IS_BLANK(val)) {
+ while (IS_BLANK(val)) {
+ val = xmlStringCurrentChar(NULL, cur, &len);
+ cur += len;
+ }
+ if (val == 0) return(1);
+
+ if (!IS_LETTER(val) && !IS_DIGIT(val) &&
+ (val != '.') && (val != '-') &&
+ (val != '_') && (val != ':') &&
+ (!IS_COMBINING(val)) &&
+ (!IS_EXTENDER(val)))
return(0);
- while ((IS_LETTER(*cur)) || (IS_DIGIT(*cur)) ||
- (*cur == '.') || (*cur == '-') ||
- (*cur == '_') || (*cur == ':') ||
- (IS_COMBINING(*cur)) ||
- (IS_EXTENDER(*cur)))
- cur++;
+ while ((IS_LETTER(val)) || (IS_DIGIT(val)) ||
+ (val == '.') || (val == '-') ||
+ (val == '_') || (val == ':') ||
+ (IS_COMBINING(val)) ||
+ (IS_EXTENDER(val))) {
+ val = xmlStringCurrentChar(NULL, cur, &len);
+ cur += len;
+ }
}
- if (*cur != 0) return(0);
+ if (val != 0) return(0);
return(1);
}