You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2020/11/05 14:26:29 UTC
[commons-jcs] branch master updated: Guard against null return
value from java.net.NetworkInterface.getNetworkInterfaces().
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-jcs.git
The following commit(s) were added to refs/heads/master by this push:
new 28af86f Guard against null return value from java.net.NetworkInterface.getNetworkInterfaces().
28af86f is described below
commit 28af86f15dea1467b8b91a0353ca1355bae8325b
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Thu Nov 5 09:26:24 2020 -0500
Guard against null return value from
java.net.NetworkInterface.getNetworkInterfaces().
---
.../commons/jcs3/utils/net/HostNameUtil.java | 64 ++++++++++++----------
.../BasicRemoteCacheClientServerUnitTest.java | 27 +++++----
2 files changed, 50 insertions(+), 41 deletions(-)
diff --git a/commons-jcs-core/src/main/java/org/apache/commons/jcs3/utils/net/HostNameUtil.java b/commons-jcs-core/src/main/java/org/apache/commons/jcs3/utils/net/HostNameUtil.java
index 863388b..b6f2b1f 100644
--- a/commons-jcs-core/src/main/java/org/apache/commons/jcs3/utils/net/HostNameUtil.java
+++ b/commons-jcs-core/src/main/java/org/apache/commons/jcs3/utils/net/HostNameUtil.java
@@ -111,27 +111,31 @@ public class HostNameUtil
{
InetAddress candidateAddress = null;
// Iterate all NICs (network interface cards)...
- for ( Enumeration<NetworkInterface> ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements(); )
+ Enumeration<NetworkInterface> ifaces = NetworkInterface.getNetworkInterfaces();
+ if ( ifaces != null )
{
- NetworkInterface iface = ifaces.nextElement();
- // Iterate all IP addresses assigned to each card...
- for ( Enumeration<InetAddress> inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements(); )
+ while ( ifaces.hasMoreElements() )
{
- InetAddress inetAddr = inetAddrs.nextElement();
- if ( !inetAddr.isLoopbackAddress() )
+ NetworkInterface iface = ifaces.nextElement();
+ // Iterate all IP addresses assigned to each card...
+ for ( Enumeration<InetAddress> inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements(); )
{
- if ( inetAddr.isSiteLocalAddress() )
+ InetAddress inetAddr = inetAddrs.nextElement();
+ if ( !inetAddr.isLoopbackAddress() )
{
- // Found non-loopback site-local address. Return it immediately...
- return inetAddr;
- }
- else if ( candidateAddress == null )
- {
- // Found non-loopback address, but not necessarily site-local.
- // Store it as a candidate to be returned if site-local address is not subsequently found...
- candidateAddress = inetAddr;
- // Note that we don't repeatedly assign non-loopback non-site-local addresses as candidates,
- // only the first. For subsequent iterations, candidate will be non-null.
+ if ( inetAddr.isSiteLocalAddress() )
+ {
+ // Found non-loopback site-local address. Return it immediately...
+ return inetAddr;
+ }
+ else if ( candidateAddress == null )
+ {
+ // Found non-loopback address, but not necessarily site-local.
+ // Store it as a candidate to be returned if site-local address is not subsequently found...
+ candidateAddress = inetAddr;
+ // Note that we don't repeatedly assign non-loopback non-site-local addresses as candidates,
+ // only the first. For subsequent iterations, candidate will be non-null.
+ }
}
}
}
@@ -172,20 +176,22 @@ public class HostNameUtil
public static NetworkInterface getMulticastNetworkInterface() throws SocketException
{
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
- while (networkInterfaces.hasMoreElements())
- {
- NetworkInterface networkInterface = networkInterfaces.nextElement();
- Enumeration<InetAddress> addressesFromNetworkInterface = networkInterface.getInetAddresses();
- while (addressesFromNetworkInterface.hasMoreElements())
+ if (networkInterfaces != null) {
+ while (networkInterfaces.hasMoreElements())
{
- InetAddress inetAddress = addressesFromNetworkInterface.nextElement();
- if (inetAddress.isSiteLocalAddress()
- && !inetAddress.isAnyLocalAddress()
- && !inetAddress.isLinkLocalAddress()
- && !inetAddress.isLoopbackAddress()
- && !inetAddress.isMulticastAddress())
+ NetworkInterface networkInterface = networkInterfaces.nextElement();
+ Enumeration<InetAddress> addressesFromNetworkInterface = networkInterface.getInetAddresses();
+ while (addressesFromNetworkInterface.hasMoreElements())
{
- return networkInterface;
+ InetAddress inetAddress = addressesFromNetworkInterface.nextElement();
+ if (inetAddress.isSiteLocalAddress()
+ && !inetAddress.isAnyLocalAddress()
+ && !inetAddress.isLinkLocalAddress()
+ && !inetAddress.isLoopbackAddress()
+ && !inetAddress.isMulticastAddress())
+ {
+ return networkInterface;
+ }
}
}
}
diff --git a/commons-jcs-core/src/test/java/org/apache/commons/jcs3/auxiliary/remote/server/BasicRemoteCacheClientServerUnitTest.java b/commons-jcs-core/src/test/java/org/apache/commons/jcs3/auxiliary/remote/server/BasicRemoteCacheClientServerUnitTest.java
index bc8ec5a..3ef66df 100644
--- a/commons-jcs-core/src/test/java/org/apache/commons/jcs3/auxiliary/remote/server/BasicRemoteCacheClientServerUnitTest.java
+++ b/commons-jcs-core/src/test/java/org/apache/commons/jcs3/auxiliary/remote/server/BasicRemoteCacheClientServerUnitTest.java
@@ -83,19 +83,22 @@ public class BasicRemoteCacheClientServerUnitTest extends Assert
InetAddress ina=InetAddress.getLocalHost();
System.out.println("InetAddress.getLocalHost()="+ina);
// Iterate all NICs (network interface cards)...
- for ( Enumeration<NetworkInterface> ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements(); )
- {
- NetworkInterface iface = ifaces.nextElement();
- // Iterate all IP addresses assigned to each card...
- for ( Enumeration<InetAddress> inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements(); )
+ Enumeration<NetworkInterface> ifaces = NetworkInterface.getNetworkInterfaces();
+ if ( ifaces != null ) {
+ while ( ifaces.hasMoreElements() )
{
- InetAddress inetAddr = inetAddrs.nextElement();
- boolean loopbackAddress = inetAddr.isLoopbackAddress();
- boolean siteLocalAddress = inetAddr.isSiteLocalAddress();
- System.out.println("Found: "+ inetAddr +
- " isLoopback: " + loopbackAddress +
- " isSiteLocal: " + siteLocalAddress +
- ((!loopbackAddress && siteLocalAddress) ? " *" : ""));
+ NetworkInterface iface = ifaces.nextElement();
+ // Iterate all IP addresses assigned to each card...
+ for ( Enumeration<InetAddress> inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements(); )
+ {
+ InetAddress inetAddr = inetAddrs.nextElement();
+ boolean loopbackAddress = inetAddr.isLoopbackAddress();
+ boolean siteLocalAddress = inetAddr.isSiteLocalAddress();
+ System.out.println("Found: "+ inetAddr +
+ " isLoopback: " + loopbackAddress +
+ " isSiteLocal: " + siteLocalAddress +
+ ((!loopbackAddress && siteLocalAddress) ? " *" : ""));
+ }
}
}
} catch (Exception e) {