Browse Source

Fixed sparse warnings about integer vs. pointer use

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.
Jouni Malinen 16 years ago
parent
commit
5306f43fc3
2 changed files with 4 additions and 5 deletions
  1. 3 3
      hostapd/config.c
  2. 1 2
      src/utils/ip_addr.c

+ 3 - 3
hostapd/config.c

@@ -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')

+ 1 - 2
src/utils/ip_addr.c

@@ -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 */