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 <[email protected]>
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) {