diff options
-rw-r--r-- | luni/src/test/java/libcore/java/net/NetworkInterfaceTest.java | 7 | ||||
-rw-r--r-- | ojluni/src/main/java/java/net/NetworkInterface.java | 21 |
2 files changed, 20 insertions, 8 deletions
diff --git a/luni/src/test/java/libcore/java/net/NetworkInterfaceTest.java b/luni/src/test/java/libcore/java/net/NetworkInterfaceTest.java index 99723619cb..d809eab9ad 100644 --- a/luni/src/test/java/libcore/java/net/NetworkInterfaceTest.java +++ b/luni/src/test/java/libcore/java/net/NetworkInterfaceTest.java @@ -25,6 +25,7 @@ import java.net.Inet4Address; import java.net.Inet6Address; import java.net.InetAddress; import java.net.InterfaceAddress; +import java.net.MulticastSocket; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Collections; @@ -232,4 +233,10 @@ public class NetworkInterfaceTest extends TestCase { private static boolean isEthernet(String ifName) throws Exception { return ethernetNamePattern.matcher(ifName).matches(); } + + public void testGetInterfaceAddressesDoesNotThrowNPE() throws Exception { + try (MulticastSocket mcastSock = new MulticastSocket()) { + mcastSock.getNetworkInterface().getInterfaceAddresses(); + } + } } diff --git a/ojluni/src/main/java/java/net/NetworkInterface.java b/ojluni/src/main/java/java/net/NetworkInterface.java index c157eca8fe..2547673c3d 100644 --- a/ojluni/src/main/java/java/net/NetworkInterface.java +++ b/ojluni/src/main/java/java/net/NetworkInterface.java @@ -175,15 +175,20 @@ public final class NetworkInterface { */ public java.util.List<InterfaceAddress> getInterfaceAddresses() { java.util.List<InterfaceAddress> lst = new java.util.ArrayList<InterfaceAddress>(1); - SecurityManager sec = System.getSecurityManager(); - for (int j=0; j<bindings.length; j++) { - try { - if (sec != null) { - sec.checkConnect(bindings[j].getAddress().getHostAddress(), -1); - } - lst.add(bindings[j]); - } catch (SecurityException e) { } + // BEGIN Android-changed: Cherry-picked upstream OpenJDK9 change rev 59a110a38cea + // http://b/30628919 + if (bindings != null) { + SecurityManager sec = System.getSecurityManager(); + for (int j=0; j<bindings.length; j++) { + try { + if (sec != null) { + sec.checkConnect(bindings[j].getAddress().getHostAddress(), -1); + } + lst.add(bindings[j]); + } catch (SecurityException e) { } + } } + // END Android-changed: Cherry-picked upstream OpenJDK9 change rev 59a110a38cea return lst; } |