aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/auth.c2
-rw-r--r--src/html.cc4
-rw-r--r--src/misc.c8
-rw-r--r--src/url.c3
4 files changed, 8 insertions, 9 deletions
diff --git a/src/auth.c b/src/auth.c
index d6ca8504..d6ff081b 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -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);
diff --git a/src/misc.c b/src/misc.c
index 5efcf1de..0181a125 100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -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);
}
diff --git a/src/url.c b/src/url.c
index 0130fa8e..4c7ea356 100644
--- a/src/url.c
+++ b/src/url.c
@@ -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++ = '+';