Fix ctype arguments.
authorPauli <paul.dale@oracle.com>
Sun, 20 Aug 2017 21:36:23 +0000 (07:36 +1000)
committerPauli <paul.dale@oracle.com>
Mon, 21 Aug 2017 21:35:08 +0000 (07:35 +1000)
Cast arguments to the various ctype functions to unsigned char to match their
documentation.

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4203)

apps/opt.c
apps/rehash.c
ssl/ssl_ciph.c
test/ecstresstest.c
test/evp_test.c
test/testutil/format_output.c
test/testutil/stanza.c

index 72d0c53..40d6a27 100644 (file)
@@ -61,7 +61,7 @@ char *opt_progname(const char *argv0)
     if (n > sizeof prog - 1)
         n = sizeof prog - 1;
     for (q = prog, i = 0; i < n; i++, p++)
-        *q++ = isupper(*p) ? tolower(*p) : *p;
+        *q++ = tolower((unsigned char)*p);
     *q = '\0';
     return prog;
 }
index ad7108a..8bb9a14 100644 (file)
@@ -300,7 +300,7 @@ static int massage_filename(char *name)
 
     if (q != NULL) {
         for (q++; *q != '\0'; q++) {
-            if (!isdigit(*q))
+            if (!isdigit((unsigned char)*q))
                 return 1;
         }
     }
index 914d0d8..60e1308 100644 (file)
@@ -1001,7 +1001,8 @@ static int ssl_cipher_process_rulestr(const char *rule_str,
                    ((ch >= 'a') && (ch <= 'z')) ||
                    (ch == '-') || (ch == '.') || (ch == '='))
 #else
-            while (isalnum(ch) || (ch == '-') || (ch == '.') || (ch == '='))
+            while (isalnum((unsigned char)ch) || (ch == '-') || (ch == '.')
+                   || (ch == '='))
 #endif
             {
                 ch = *(++l);
index 7c76f02..b47095c 100644 (file)
@@ -109,7 +109,7 @@ static int atoi64(const char *in, int64_t *result)
     for ( ; *in != '\0'; in++) {
         char c = *in;
 
-        if (!isdigit(c))
+        if (!isdigit((unsigned char)c))
             return 0;
         ret *= 10;
         ret += (c - '0');
index 3875081..9de7fcc 100644 (file)
@@ -1302,7 +1302,7 @@ static int parse_uint64(const char *value, uint64_t *pr)
             return -1;
         }
         *pr *= 10;
-        if (!TEST_true(isdigit(*p))) {
+        if (!TEST_true(isdigit((unsigned char)*p))) {
             TEST_error("Invalid character in string %s", value);
             return -1;
         }
index 13123d5..9b04a94 100644 (file)
@@ -72,12 +72,12 @@ static void test_fail_string_common(const char *prefix, const char *file,
         if (l1 > 0) {
             b1[n1 = l1 > width ? width : l1] = 0;
             for (i = 0; i < n1; i++)
-                b1[i] = isprint(m1[i]) ? m1[i] : '.';
+                b1[i] = isprint((unsigned char)m1[i]) ? m1[i] : '.';
         }
         if (l2 > 0) {
             b2[n2 = l2 > width ? width : l2] = 0;
             for (i = 0; i < n2; i++)
-                b2[i] = isprint(m2[i]) ? m2[i] : '.';
+                b2[i] = isprint((unsigned char)m2[i]) ? m2[i] : '.';
         }
         diff = 0;
         i = 0;
index 3596752..09fc181 100644 (file)
@@ -70,12 +70,12 @@ static char *strip_spaces(char *p)
     char *q;
 
     /* Skip over leading spaces */
-    while (*p && isspace(*p))
+    while (*p && isspace((unsigned char)*p))
         p++;
     if (!*p)
         return NULL;
 
-    for (q = p + strlen(p) - 1; q != p && isspace(*q); )
+    for (q = p + strlen(p) - 1; q != p && isspace((unsigned char)*q); )
         *q-- = '\0';
     return *p ? p : NULL;
 }