--- a/src/java.base/unix/native/libnet/PlainDatagramSocketImpl.c Wed Jul 18 14:44:04 2018 -0700
+++ b/src/java.base/unix/native/libnet/PlainDatagramSocketImpl.c Thu Jan 18 13:55:26 2018 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -531,9 +531,12 @@
iaObj = NET_SockaddrToInetAddress(env, &rmtaddr, &port);
family = getInetAddress_family(env, iaObj) == java_net_InetAddress_IPv4 ?
AF_INET : AF_INET6;
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
if (family == AF_INET) { /* this API can't handle IPV6 addresses */
int address = getInetAddress_addr(env, iaObj);
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
setInetAddress_addr(env, addressObj, address);
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
}
return port;
}
@@ -1045,7 +1048,9 @@
for (i = 0; i < len; i++) {
addr = (*env)->GetObjectArrayElement(env, addrArray, i);
if (getInetAddress_family(env, addr) == java_net_InetAddress_IPv4) {
+ JNU_CHECK_EXCEPTION(env);
in.s_addr = htonl(getInetAddress_addr(env, addr));
+ JNU_CHECK_EXCEPTION(env);
break;
}
}
@@ -1095,7 +1100,7 @@
struct in_addr in;
in.s_addr = htonl( getInetAddress_addr(env, value) );
-
+ JNU_CHECK_EXCEPTION(env);
if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF,
(const char*)&in, sizeof(in)) < 0) {
JNU_ThrowByNameWithMessageAndLastError
@@ -1458,6 +1463,7 @@
CHECK_NULL_RETURN(addr, NULL);
setInetAddress_addr(env, addr, ntohl(in.s_addr));
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
/*
* For IP_MULTICAST_IF return InetAddress
@@ -1911,6 +1917,7 @@
#ifdef __linux__
if (getInetAddress_family(env, iaObj) == java_net_InetAddress_IPv4) {
+ JNU_CHECK_EXCEPTION(env);
ipv6_join_leave = JNI_FALSE;
}
#endif
@@ -1951,6 +1958,7 @@
}
mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj));
+ JNU_CHECK_EXCEPTION(env);
mname.imr_address.s_addr = 0;
mname.imr_ifindex = (*env)->GetIntField(env, niObj, ni_indexID);
mname_len = sizeof(struct ip_mreqn);
@@ -1969,11 +1977,14 @@
addr = (*env)->GetObjectArrayElement(env, addrArray, 0);
mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj));
+ JNU_CHECK_EXCEPTION(env);
#ifdef __linux__
mname.imr_address.s_addr = htonl(getInetAddress_addr(env, addr));
+ JNU_CHECK_EXCEPTION(env);
mname.imr_ifindex = 0;
#else
mname.imr_interface.s_addr = htonl(getInetAddress_addr(env, addr));
+ JNU_CHECK_EXCEPTION(env);
#endif
mname_len = sizeof(struct ip_mreq);
}
@@ -2009,6 +2020,7 @@
}
mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj));
+ JNU_CHECK_EXCEPTION(env);
mname.imr_address.s_addr = 0 ;
mname.imr_ifindex = index;
mname_len = sizeof(struct ip_mreqn);
@@ -2031,6 +2043,7 @@
mname.imr_interface.s_addr = in.s_addr;
#endif
mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj));
+ JNU_CHECK_EXCEPTION(env);
mname_len = sizeof(struct ip_mreq);
}
}
@@ -2097,10 +2110,11 @@
jint address;
family = getInetAddress_family(env, iaObj) == java_net_InetAddress_IPv4 ?
AF_INET : AF_INET6;
+ JNU_CHECK_EXCEPTION(env);
if (family == AF_INET) { /* will convert to IPv4-mapped address */
memset((char *) caddr, 0, 16);
address = getInetAddress_addr(env, iaObj);
-
+ JNU_CHECK_EXCEPTION(env);
caddr[10] = 0xff;
caddr[11] = 0xff;