Jelajahi Sumber

Merge pull request #449 from vitherman/fix_check_radius_ifa_addr_null

Fix null pointer dereference in check_radius
Sebastian Wolf 6 tahun lalu
induk
melakukan
a0443cd15c
1 mengubah file dengan 8 tambahan dan 2 penghapusan
  1. 8 2
      plugins/check_radius.c

+ 8 - 2
plugins/check_radius.c

@@ -441,22 +441,28 @@ char *get_ether_addr(uint32_t client_id)
 
 	getifaddrs(&ifap);
 
-	for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next)
+	for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) {
+		if (ifa->ifa_addr == NULL)
+			continue;
 		if (ifa->ifa_addr->sa_family == AF_INET) {
 			sain = (struct sockaddr_in *)ifa->ifa_addr;
 			if (client_id == ntohl(sain->sin_addr.s_addr))
 				break;
 		}
+	}
 	if (ifa == NULL) {
 		freeifaddrs(ifap);
 		return NULL;
 	}
 
 	ifb = ifa;
-	for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next)
+	for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) {
+		if (ifa->ifa_addr == NULL)
+			continue;
 		if (ifa->ifa_addr->sa_family == AF_LINK
 		    && strcmp(ifa->ifa_name, ifb->ifa_name) == 0)
 			break;
+	}
 	if (ifa == NULL) {
 		freeifaddrs(ifap);
 		return NULL;