Fixed sparse warnings about integer vs. pointer use
authorJouni Malinen <j@w1.fi>
Sat, 3 Jan 2009 18:46:32 +0000 (20:46 +0200)
committerJouni Malinen <j@w1.fi>
Sat, 3 Jan 2009 18:46:32 +0000 (20:46 +0200)
The configuration parsing functions seemed to have worked fine before,
but these were real bugs even if they did not show up in practice.
hostapd_ip_diff() was broken for IPv6 addresses (overwrote address and
always returned 1.

hostapd/config.c
src/utils/ip_addr.c

index 650ddb9..f333d1d 100644 (file)
@@ -411,7 +411,7 @@ static int hostapd_config_read_wpa_psk(const char *fname,
                        os_memcpy(psk->addr, addr, ETH_ALEN);
 
                pos = buf + 17;
-               if (pos == '\0') {
+               if (*pos == '\0') {
                        printf("No PSK on line %d in '%s'\n", line, fname);
                        os_free(psk);
                        ret = -1;
@@ -800,7 +800,7 @@ static int hostapd_config_parse_key_mgmt(int line, const char *value)
                return -1;
        start = buf;
 
-       while (start != '\0') {
+       while (*start != '\0') {
                while (*start == ' ' || *start == '\t')
                        start++;
                if (*start == '\0')
@@ -858,7 +858,7 @@ static int hostapd_config_parse_cipher(int line, const char *value)
                return -1;
        start = buf;
 
-       while (start != '\0') {
+       while (*start != '\0') {
                while (*start == ' ' || *start == '\t')
                        start++;
                if (*start == '\0')
index d40a871..158fd57 100644 (file)
@@ -53,8 +53,7 @@ int hostapd_ip_diff(struct hostapd_ip_addr *a, struct hostapd_ip_addr *b)
                break;
 #ifdef CONFIG_IPV6
        case AF_INET6:
-               if (os_memcpy(&a->u.v6, &b->u.v6, sizeof(a->u.v6))
-                   != 0)
+               if (os_memcmp(&a->u.v6, &b->u.v6, sizeof(a->u.v6)) != 0)
                        return 1;
                break;
 #endif /* CONFIG_IPV6 */