mirror of
				https://github.com/Telecominfraproject/wlan-cloud-lib-poco.git
				synced 2025-11-04 04:28:10 +00:00 
			
		
		
		
	fix crash under linux IPV6 in NetworkInterface::list() if currIface->ifa_addr is NULL
This commit is contained in:
		@@ -903,19 +903,22 @@ NetworkInterface::NetworkInterfaceList NetworkInterface::list()
 | 
			
		||||
			IPAddress addr;
 | 
			
		||||
			bool haveAddr = false;
 | 
			
		||||
			int ifIndex(-1);
 | 
			
		||||
			switch (currIface->ifa_addr->sa_family)
 | 
			
		||||
			if (currIface->ifa_addr)
 | 
			
		||||
			{
 | 
			
		||||
			case AF_INET6:
 | 
			
		||||
				ifIndex = if_nametoindex(currIface->ifa_name);
 | 
			
		||||
				addr = IPAddress(&reinterpret_cast<const struct sockaddr_in6*>(currIface->ifa_addr)->sin6_addr, sizeof(struct in6_addr), ifIndex);
 | 
			
		||||
				haveAddr = true;
 | 
			
		||||
				break;
 | 
			
		||||
			case AF_INET:
 | 
			
		||||
				addr = IPAddress(*(currIface->ifa_addr));
 | 
			
		||||
				haveAddr = true;
 | 
			
		||||
				break;
 | 
			
		||||
			default:
 | 
			
		||||
				break;
 | 
			
		||||
                switch (currIface->ifa_addr->sa_family)
 | 
			
		||||
                {
 | 
			
		||||
                case AF_INET6:
 | 
			
		||||
                    ifIndex = if_nametoindex(currIface->ifa_name);
 | 
			
		||||
                    addr = IPAddress(&reinterpret_cast<const struct sockaddr_in6*>(currIface->ifa_addr)->sin6_addr, sizeof(struct in6_addr), ifIndex);
 | 
			
		||||
                    haveAddr = true;
 | 
			
		||||
                    break;
 | 
			
		||||
                case AF_INET:
 | 
			
		||||
                    addr = IPAddress(*(currIface->ifa_addr));
 | 
			
		||||
                    haveAddr = true;
 | 
			
		||||
                    break;
 | 
			
		||||
                default:
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
			}
 | 
			
		||||
			if (haveAddr) 
 | 
			
		||||
			{
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user