Просмотр исходного кода

Merge pull request #449 from vitherman/fix_check_radius_ifa_addr_null

Fix null pointer dereference in check_radius
Sebastian Wolf 6 лет назад
Родитель
Сommit
a0443cd15c
1 измененных файлов с 8 добавлено и 2 удалено
  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;