ctype functions require an unsigned char
authorRoy Marples <roy@marples.name>
Wed, 10 Feb 2016 19:27:42 +0000 (19:27 +0000)
committerJouni Malinen <j@w1.fi>
Thu, 18 Feb 2016 15:39:00 +0000 (17:39 +0200)
Ensure that characters are represented as unsigned char when using
isblank() and isspace(). These function take in a "int c" argument, but
it needs to be unsigned for the cases where EOF is not indicated.

Signed-off-by: Roy Marples <roy@marples.name>
hostapd/ctrl_iface.c
src/drivers/driver_common.c
src/utils/common.c
wpa_supplicant/ctrl_iface.c

index d56599b..0939d6e 100644 (file)
@@ -1877,13 +1877,13 @@ static int hostapd_ctrl_iface_vendor(struct hostapd_data *hapd, char *cmd,
 
        /* cmd: <vendor id> <subcommand id> [<hex formatted data>] */
        vendor_id = strtoul(cmd, &pos, 16);
-       if (!isblank(*pos))
+       if (!isblank((unsigned char) *pos))
                return -EINVAL;
 
        subcmd = strtoul(pos, &pos, 10);
 
        if (*pos != '\0') {
-               if (!isblank(*pos++))
+               if (!isblank((unsigned char) *pos++))
                        return -EINVAL;
                data_len = os_strlen(pos);
        }
index aebea8c..b32d35f 100644 (file)
@@ -183,12 +183,12 @@ wpa_get_wowlan_triggers(const char *wowlan_triggers,
 
        start = buf;
        while (*start != '\0') {
-               while (isblank(*start))
+               while (isblank((unsigned char) *start))
                        start++;
                if (*start == '\0')
                        break;
                end = start;
-               while (!isblank(*end) && *end != '\0')
+               while (!isblank((unsigned char) *end) && *end != '\0')
                        end++;
                last = *end == '\0';
                *end = '\0';
index e74a2ae..9c7d0d4 100644 (file)
@@ -86,7 +86,7 @@ int hwaddr_masked_aton(const char *txt, u8 *addr, u8 *mask, u8 maskable)
                return -1;
 
        /* check for optional mask */
-       if (*r == '\0' || isspace(*r)) {
+       if (*r == '\0' || isspace((unsigned char) *r)) {
                /* no mask specified, assume default */
                os_memset(mask, 0xff, ETH_ALEN);
        } else if (maskable && *r == '/') {
index 83d8473..a377eb3 100644 (file)
@@ -4712,7 +4712,7 @@ static int p2ps_ctrl_parse_cpt_priority(const char *pos, u8 *cpt)
                        return -1;
                }
 
-               if (isblank(*last)) {
+               if (isblank((unsigned char) *last)) {
                        i++;
                        break;
                }
@@ -6917,13 +6917,13 @@ static int wpa_supplicant_vendor_cmd(struct wpa_supplicant *wpa_s, char *cmd,
 
        /* cmd: <vendor id> <subcommand id> [<hex formatted data>] */
        vendor_id = strtoul(cmd, &pos, 16);
-       if (!isblank(*pos))
+       if (!isblank((unsigned char) *pos))
                return -EINVAL;
 
        subcmd = strtoul(pos, &pos, 10);
 
        if (*pos != '\0') {
-               if (!isblank(*pos++))
+               if (!isblank((unsigned char) *pos++))
                        return -EINVAL;
                data_len = os_strlen(pos);
        }