diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/auth.c | 2 | ||||
-rw-r--r-- | src/html.cc | 4 | ||||
-rw-r--r-- | src/misc.c | 8 | ||||
-rw-r--r-- | src/url.c | 3 |
4 files changed, 8 insertions, 9 deletions
@@ -104,7 +104,7 @@ static int Auth_path_is_inside(const char *path1, const char *path2, int len) static int Auth_is_token_char(char c) { const char *invalid = "\"()<>@,;:\\[]?=/{} \t"; - return (strchr(invalid, c) || iscntrl((uchar_t)c)) ? 0 : 1; + return (!isascii(c) || strchr(invalid, c) || iscntrl((uchar_t)c)) ? 0 : 1; } /* diff --git a/src/html.cc b/src/html.cc index 896aaab6..f740a77e 100644 --- a/src/html.cc +++ b/src/html.cc @@ -1462,10 +1462,10 @@ static int int i; for (i = 0; val[i]; ++i) - if (!(isalnum(val[i]) || strchr(":_.-", val[i]))) + if (!isascii(val[i]) || !(isalnum(val[i]) || strchr(":_.-", val[i]))) break; - if (val[i] || !isalpha(val[0])) + if (val[i] || !(isascii(val[0]) && isalpha(val[0]))) BUG_MSG("'%s' value is not of the form " "[A-Za-z][A-Za-z0-9:_.-]*\n", attrname); @@ -221,14 +221,14 @@ void a_Misc_parse_content_type(const char *type, char **major, char **minor, if (!(str = type)) return; - for (s = str; *s && !iscntrl((uchar_t)*s) && !strchr(tspecials_space, *s); - s++) ; + for (s = str; *s && isascii((uchar_t)*s) && !iscntrl((uchar_t)*s) && + !strchr(tspecials_space, *s); s++) ; if (major) *major = dStrndup(str, s - str); if (*s == '/') { - for (str = ++s; - *s && !iscntrl((uchar_t)*s) && !strchr(tspecials_space, *s); s++) ; + for (str = ++s; *s && isascii((uchar_t)*s) && !iscntrl((uchar_t)*s) && + !strchr(tspecials_space, *s); s++) ; if (minor) *minor = dStrndup(str, s - str); } @@ -586,8 +586,7 @@ char *a_Url_encode_hex_str(const char *str) newstr = dNew(char, 6*strlen(str)+1); for (c = newstr; *str; str++) - if ((dIsalnum(*str) && !(*str & 0x80)) || strchr(verbatim, *str)) - /* we really need isalnum for the "C" locale */ + if ((dIsalnum(*str) && isascii(*str)) || strchr(verbatim, *str)) *c++ = *str; else if (*str == ' ') *c++ = '+'; |