601 lines
25 KiB
Diff
601 lines
25 KiB
Diff
--- icedtea-3.8.0/openjdk/jdk/src/share/native/common/jni_util.h 2018-09-18 09:42:59.678195376 +0200
|
|
+++ icedtea-3.8.0/openjdk/jdk/src/share/native/common/jni_util.h 2018-09-18 09:45:28.239002753 +0200
|
|
@@ -297,6 +297,22 @@
|
|
} \
|
|
} while (0) \
|
|
|
|
+#define CHECK_NULL_THROW_NPE(env, x, msg) \
|
|
+ do { \
|
|
+ if ((x) == NULL) { \
|
|
+ JNU_ThrowNullPointerException((env), (msg));\
|
|
+ return; \
|
|
+ } \
|
|
+ } while(0) \
|
|
+
|
|
+#define CHECK_NULL_THROW_NPE_RETURN(env, x, msg, z)\
|
|
+ do { \
|
|
+ if ((x) == NULL) { \
|
|
+ JNU_ThrowNullPointerException((env), (msg));\
|
|
+ return (z); \
|
|
+ } \
|
|
+ } while(0) \
|
|
+
|
|
#define CHECK_NULL_RETURN(x, y) \
|
|
do { \
|
|
if ((x) == NULL) { \
|
|
--- icedtea-3.8.0/openjdk/jdk/src/share/native/java/net/net_util.c 2018-09-18 09:42:59.682195399 +0200
|
|
+++ icedtea-3.8.0/openjdk/jdk/src/share/native/java/net/net_util.c 2018-09-18 09:45:28.239002753 +0200
|
|
@@ -163,32 +163,38 @@
|
|
|
|
void setInetAddress_addr(JNIEnv *env, jobject iaObj, int address) {
|
|
jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
|
|
+ CHECK_NULL_THROW_NPE(env, holder, "InetAddress holder is null");
|
|
(*env)->SetIntField(env, holder, iac_addressID, address);
|
|
}
|
|
|
|
void setInetAddress_family(JNIEnv *env, jobject iaObj, int family) {
|
|
jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
|
|
+ CHECK_NULL_THROW_NPE(env, holder, "InetAddress holder is null");
|
|
(*env)->SetIntField(env, holder, iac_familyID, family);
|
|
}
|
|
|
|
void setInetAddress_hostName(JNIEnv *env, jobject iaObj, jobject host) {
|
|
jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
|
|
+ CHECK_NULL_THROW_NPE(env, holder, "InetAddress holder is null");
|
|
(*env)->SetObjectField(env, holder, iac_hostNameID, host);
|
|
(*env)->SetObjectField(env, holder, iac_origHostNameID, host);
|
|
}
|
|
|
|
int getInetAddress_addr(JNIEnv *env, jobject iaObj) {
|
|
jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
|
|
+ CHECK_NULL_THROW_NPE_RETURN(env, holder, "InetAddress holder is null", -1);
|
|
return (*env)->GetIntField(env, holder, iac_addressID);
|
|
}
|
|
|
|
int getInetAddress_family(JNIEnv *env, jobject iaObj) {
|
|
jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
|
|
+ CHECK_NULL_THROW_NPE_RETURN(env, holder, "InetAddress holder is null", -1);
|
|
return (*env)->GetIntField(env, holder, iac_familyID);
|
|
}
|
|
|
|
jobject getInetAddress_hostName(JNIEnv *env, jobject iaObj) {
|
|
jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
|
|
+ CHECK_NULL_THROW_NPE_RETURN(env, holder, "InetAddress holder is null", NULL);
|
|
return (*env)->GetObjectField(env, holder, iac_hostNameID);
|
|
}
|
|
|
|
@@ -209,7 +215,9 @@
|
|
CHECK_NULL_RETURN(iaObj, NULL);
|
|
address = NET_IPv4MappedToIPv4(caddr);
|
|
setInetAddress_addr(env, iaObj, address);
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
|
setInetAddress_family(env, iaObj, IPv4);
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
|
} else {
|
|
jint scope;
|
|
jboolean ret;
|
|
@@ -219,6 +227,7 @@
|
|
if (ret == JNI_FALSE)
|
|
return NULL;
|
|
setInetAddress_family(env, iaObj, IPv6);
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
|
scope = getScopeID(him);
|
|
setInet6Address_scopeid(env, iaObj, scope);
|
|
}
|
|
@@ -230,7 +239,9 @@
|
|
iaObj = (*env)->NewObject(env, ia4_class, ia4_ctrID);
|
|
CHECK_NULL_RETURN(iaObj, NULL);
|
|
setInetAddress_family(env, iaObj, IPv4);
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
|
setInetAddress_addr(env, iaObj, ntohl(him4->sin_addr.s_addr));
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
|
*port = ntohs(him4->sin_port);
|
|
}
|
|
return iaObj;
|
|
@@ -243,6 +254,7 @@
|
|
|
|
#ifdef AF_INET6
|
|
family = getInetAddress_family(env, iaObj) == IPv4? AF_INET : AF_INET6;
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
|
|
if (him->sa_family == AF_INET6) {
|
|
#ifdef WIN32
|
|
struct SOCKADDR_IN6 *him6 = (struct SOCKADDR_IN6 *)him;
|
|
@@ -258,6 +270,7 @@
|
|
}
|
|
addrNew = NET_IPv4MappedToIPv4(caddrNew);
|
|
addrCur = getInetAddress_addr(env, iaObj);
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
|
|
if (addrNew == addrCur) {
|
|
return JNI_TRUE;
|
|
} else {
|
|
@@ -288,6 +301,7 @@
|
|
}
|
|
addrNew = ntohl(him4->sin_addr.s_addr);
|
|
addrCur = getInetAddress_addr(env, iaObj);
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
|
|
if (addrNew == addrCur) {
|
|
return JNI_TRUE;
|
|
} else {
|
|
--- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2018-09-18 09:42:59.458194181 +0200
|
|
+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2018-09-18 09:45:28.239002753 +0200
|
|
@@ -236,7 +236,11 @@
|
|
goto cleanupAndReturn;
|
|
}
|
|
setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)(iterator->ai_addr))->sin_addr.s_addr));
|
|
+ if ((*env)->ExceptionCheck(env))
|
|
+ goto cleanupAndReturn;
|
|
setInetAddress_hostName(env, iaObj, name);
|
|
+ if ((*env)->ExceptionCheck(env))
|
|
+ goto cleanupAndReturn;
|
|
(*env)->SetObjectArrayElement(env, ret, retLen - i -1, iaObj);
|
|
i++;
|
|
iterator = iterator->ai_next;
|
|
@@ -479,7 +483,11 @@
|
|
goto cleanupAndReturn;
|
|
}
|
|
setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr));
|
|
+ if ((*env)->ExceptionCheck(env))
|
|
+ goto cleanupAndReturn;
|
|
setInetAddress_hostName(env, iaObj, host);
|
|
+ if ((*env)->ExceptionCheck(env))
|
|
+ goto cleanupAndReturn;
|
|
(*env)->SetObjectArrayElement(env, ret, i++, iaObj);
|
|
iterator = iterator->ai_next;
|
|
}
|
|
--- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/Inet6AddressImpl.c 2018-09-18 09:42:59.458194181 +0200
|
|
+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/Inet6AddressImpl.c 2018-09-18 09:45:28.239002753 +0200
|
|
@@ -226,6 +226,8 @@
|
|
return NULL;
|
|
}
|
|
setInetAddress_hostName(env, o, name);
|
|
+ if ((*env)->ExceptionCheck(env))
|
|
+ goto done;
|
|
(*env)->SetObjectArrayElement(env, result, index, o);
|
|
(*env)->DeleteLocalRef(env, o);
|
|
}
|
|
@@ -416,7 +418,11 @@
|
|
goto cleanupAndReturn;
|
|
}
|
|
setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr));
|
|
+ if ((*env)->ExceptionCheck(env))
|
|
+ goto cleanupAndReturn;
|
|
setInetAddress_hostName(env, iaObj, host);
|
|
+ if ((*env)->ExceptionCheck(env))
|
|
+ goto cleanupAndReturn;
|
|
(*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj);
|
|
inetIndex++;
|
|
} else if (iterator->ai_family == AF_INET6) {
|
|
@@ -438,6 +444,8 @@
|
|
setInet6Address_scopeid(env, iaObj, scope);
|
|
}
|
|
setInetAddress_hostName(env, iaObj, host);
|
|
+ if ((*env)->ExceptionCheck(env))
|
|
+ goto cleanupAndReturn;
|
|
(*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj);
|
|
inet6Index++;
|
|
}
|
|
--- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/net_util_md.c 2018-09-18 09:42:59.458194181 +0200
|
|
+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/net_util_md.c 2018-09-18 09:45:28.243002775 +0200
|
|
@@ -807,6 +807,7 @@
|
|
int *len, jboolean v4MappedAddress) {
|
|
jint family;
|
|
family = getInetAddress_family(env, iaObj);
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
|
#ifdef AF_INET6
|
|
/* needs work. 1. family 2. clean up him6 etc deallocate memory */
|
|
if (ipv6_available() && !(family == IPv4 && v4MappedAddress == JNI_FALSE)) {
|
|
@@ -818,6 +819,7 @@
|
|
if (family == IPv4) { /* will convert to IPv4-mapped address */
|
|
memset((char *) caddr, 0, 16);
|
|
address = getInetAddress_addr(env, iaObj);
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
|
if (address == INADDR_ANY) {
|
|
/* we would always prefer IPv6 wildcard address
|
|
caddr[10] = 0xff;
|
|
@@ -926,6 +928,7 @@
|
|
}
|
|
memset((char *) him4, 0, sizeof(struct sockaddr_in));
|
|
address = getInetAddress_addr(env, iaObj);
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
|
him4->sin_port = htons((short) port);
|
|
him4->sin_addr.s_addr = (uint32_t) htonl(address);
|
|
him4->sin_family = AF_INET;
|
|
--- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c 2018-09-18 09:42:59.458194181 +0200
|
|
+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c 2018-09-18 09:45:28.239002753 +0200
|
|
@@ -332,14 +332,14 @@
|
|
(JNIEnv *env, jclass cls, jobject iaObj)
|
|
{
|
|
netif *ifs, *curr;
|
|
+ jobject obj = NULL;
|
|
+ jboolean match = JNI_FALSE;
|
|
#if defined(AF_INET6)
|
|
int family = (getInetAddress_family(env, iaObj) == IPv4) ? AF_INET : AF_INET6;
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
|
#else
|
|
int family = AF_INET;
|
|
#endif
|
|
- jobject obj = NULL;
|
|
- jboolean match = JNI_FALSE;
|
|
-
|
|
ifs = enumInterfaces(env);
|
|
if (ifs == NULL) {
|
|
return NULL;
|
|
@@ -357,7 +357,7 @@
|
|
int address1 = htonl(
|
|
((struct sockaddr_in *)addrP->addr)->sin_addr.s_addr);
|
|
int address2 = getInetAddress_addr(env, iaObj);
|
|
-
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
|
if (address1 == address2) {
|
|
match = JNI_TRUE;
|
|
break;
|
|
@@ -703,6 +703,7 @@
|
|
if (iaObj) {
|
|
setInetAddress_addr(env, iaObj, htonl(
|
|
((struct sockaddr_in*)addrP->addr)->sin_addr.s_addr));
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
|
} else {
|
|
return NULL;
|
|
}
|
|
@@ -715,6 +716,7 @@
|
|
if (ia2Obj) {
|
|
setInetAddress_addr(env, ia2Obj, htonl(
|
|
((struct sockaddr_in*)addrP->brdcast)->sin_addr.s_addr));
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
|
(*env)->SetObjectField(env, ibObj, ni_ib4broadcastID, ia2Obj);
|
|
} else {
|
|
return NULL;
|
|
--- icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2018-09-18 09:42:59.458194181 +0200
|
|
+++ icedtea-3.8.0/openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2018-09-18 09:46:37.219377628 +0200
|
|
@@ -552,12 +552,15 @@
|
|
iaObj = NET_SockaddrToInetAddress(env, (struct sockaddr *)&remote_addr, &port);
|
|
#ifdef AF_INET6
|
|
family = getInetAddress_family(env, iaObj) == IPv4? AF_INET : AF_INET6;
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
|
#else
|
|
family = AF_INET;
|
|
#endif
|
|
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;
|
|
}
|
|
@@ -1072,7 +1075,9 @@
|
|
for (i = 0; i < len; i++) {
|
|
addr = (*env)->GetObjectArrayElement(env, addrArray, i);
|
|
if (getInetAddress_family(env, addr) == IPv4) {
|
|
+ JNU_CHECK_EXCEPTION(env);
|
|
in.s_addr = htonl(getInetAddress_addr(env, addr));
|
|
+ JNU_CHECK_EXCEPTION(env);
|
|
break;
|
|
}
|
|
}
|
|
@@ -1126,6 +1131,7 @@
|
|
|
|
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) {
|
|
NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException",
|
|
@@ -1492,6 +1498,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
|
|
@@ -1954,6 +1961,7 @@
|
|
|
|
#ifdef __linux__
|
|
if (getInetAddress_family(env, iaObj) == IPv4) {
|
|
+ JNU_CHECK_EXCEPTION(env);
|
|
ipv6_join_leave = JNI_FALSE;
|
|
}
|
|
#endif
|
|
@@ -2001,6 +2009,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);
|
|
@@ -2019,10 +2028,13 @@
|
|
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);
|
|
#else
|
|
mname.imr_interface.s_addr = htonl(getInetAddress_addr(env, addr));
|
|
+ JNU_CHECK_EXCEPTION(env);
|
|
#endif
|
|
mname_len = sizeof(struct ip_mreq);
|
|
}
|
|
@@ -2058,6 +2070,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);
|
|
@@ -2080,6 +2093,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);
|
|
}
|
|
}
|
|
@@ -2145,10 +2159,12 @@
|
|
jint family;
|
|
jint address;
|
|
family = getInetAddress_family(env, iaObj) == 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;
|
|
|
|
--- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/Inet4AddressImpl.c 2018-09-18 09:42:59.698195486 +0200
|
|
+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/Inet4AddressImpl.c 2018-09-18 09:45:28.243002775 +0200
|
|
@@ -195,6 +195,8 @@
|
|
goto cleanupAndReturn;
|
|
}
|
|
setInetAddress_addr(env, iaObj, ntohl(address));
|
|
+ if ((*env)->ExceptionCheck(env))
|
|
+ goto cleanupAndReturn;
|
|
(*env)->SetObjectArrayElement(env, ret, 0, iaObj);
|
|
JNU_ReleaseStringPlatformChars(env, host, hostname);
|
|
return ret;
|
|
@@ -228,7 +230,11 @@
|
|
goto cleanupAndReturn;
|
|
}
|
|
setInetAddress_addr(env, iaObj, ntohl((*addrp)->s_addr));
|
|
+ if ((*env)->ExceptionCheck(env))
|
|
+ goto cleanupAndReturn;
|
|
setInetAddress_hostName(env, iaObj, host);
|
|
+ if ((*env)->ExceptionCheck(env))
|
|
+ goto cleanupAndReturn;
|
|
(*env)->SetObjectArrayElement(env, ret, i, iaObj);
|
|
addrp++;
|
|
i++;
|
|
--- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/Inet6AddressImpl.c 2018-09-18 09:42:59.698195486 +0200
|
|
+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/Inet6AddressImpl.c 2018-09-18 09:45:28.243002775 +0200
|
|
@@ -219,7 +219,11 @@
|
|
goto cleanupAndReturn;
|
|
}
|
|
setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr));
|
|
+ if ((*env)->ExceptionCheck(env))
|
|
+ goto cleanupAndReturn;
|
|
setInetAddress_hostName(env, iaObj, host);
|
|
+ if ((*env)->ExceptionCheck(env))
|
|
+ goto cleanupAndReturn;
|
|
(*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj);
|
|
inetIndex ++;
|
|
} else if (iterator->ai_family == AF_INET6) {
|
|
@@ -240,6 +244,8 @@
|
|
setInet6Address_scopeid(env, iaObj, scope);
|
|
}
|
|
setInetAddress_hostName(env, iaObj, host);
|
|
+ if ((*env)->ExceptionCheck(env))
|
|
+ goto cleanupAndReturn;
|
|
(*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj);
|
|
inet6Index ++;
|
|
}
|
|
--- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/net_util_md.c 2018-09-18 09:42:59.698195486 +0200
|
|
+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/net_util_md.c 2018-09-18 09:45:28.247002797 +0200
|
|
@@ -875,6 +875,7 @@
|
|
int *len, jboolean v4MappedAddress) {
|
|
jint family, iafam;
|
|
iafam = getInetAddress_family(env, iaObj);
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
|
family = (iafam == IPv4)? AF_INET : AF_INET6;
|
|
if (ipv6_available() && !(family == AF_INET && v4MappedAddress == JNI_FALSE)) {
|
|
struct SOCKADDR_IN6 *him6 = (struct SOCKADDR_IN6 *)him;
|
|
@@ -885,6 +886,7 @@
|
|
if (family == AF_INET) { /* will convert to IPv4-mapped address */
|
|
memset((char *) caddr, 0, 16);
|
|
address = getInetAddress_addr(env, iaObj);
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
|
if (address == INADDR_ANY) {
|
|
/* we would always prefer IPv6 wildcard address
|
|
caddr[10] = 0xff;
|
|
@@ -923,6 +925,7 @@
|
|
}
|
|
memset((char *) him4, 0, sizeof(struct sockaddr_in));
|
|
address = getInetAddress_addr(env, iaObj);
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
|
him4->sin_port = htons((short) port);
|
|
him4->sin_addr.s_addr = (u_long) htonl(address);
|
|
him4->sin_family = AF_INET;
|
|
--- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/NetworkInterface.c 2018-09-18 09:42:59.698195486 +0200
|
|
+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/NetworkInterface.c 2018-09-18 09:45:28.243002775 +0200
|
|
@@ -593,6 +593,7 @@
|
|
/* default ctor will set family to AF_INET */
|
|
|
|
setInetAddress_addr(env, iaObj, ntohl(addrs->addr.him4.sin_addr.s_addr));
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
|
if (addrs->mask != -1) {
|
|
ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID);
|
|
if (ibObj == NULL) {
|
|
@@ -606,6 +607,7 @@
|
|
return NULL;
|
|
}
|
|
setInetAddress_addr(env, ia2Obj, ntohl(addrs->brdcast.him4.sin_addr.s_addr));
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
|
(*env)->SetObjectField(env, ibObj, ni_ibbroadcastID, ia2Obj);
|
|
(*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask);
|
|
(*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj);
|
|
@@ -761,8 +763,9 @@
|
|
(JNIEnv *env, jclass cls, jobject iaObj)
|
|
{
|
|
netif *ifList, *curr;
|
|
- jint addr = getInetAddress_addr(env, iaObj);
|
|
jobject netifObj = NULL;
|
|
+ jint addr = getInetAddress_addr(env, iaObj);
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
|
|
|
// Retained for now to support IPv4 only stack, java.net.preferIPv4Stack
|
|
if (ipv6_available()) {
|
|
--- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c 2018-09-18 09:42:59.698195486 +0200
|
|
+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/NetworkInterface_winXP.c 2018-09-18 09:45:28.243002775 +0200
|
|
@@ -545,6 +545,7 @@
|
|
|
|
setInetAddress_addr(env, iaObj, ntohl(addrs->addr.him4.sin_addr.s_addr));
|
|
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
|
ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID);
|
|
if (ibObj == NULL) {
|
|
free_netaddr(netaddrP);
|
|
@@ -557,6 +558,7 @@
|
|
return NULL;
|
|
}
|
|
setInetAddress_addr(env, ia2Obj, ntohl(addrs->brdcast.him4.sin_addr.s_addr));
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
|
(*env)->SetObjectField(env, ibObj, ni_ibbroadcastID, ia2Obj);
|
|
(*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask);
|
|
(*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj);
|
|
--- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c 2018-09-18 09:42:59.698195486 +0200
|
|
+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c 2018-09-18 09:45:28.247002797 +0200
|
|
@@ -439,12 +439,13 @@
|
|
memset((char *)&lcladdr, 0, sizeof(lcladdr));
|
|
|
|
family = getInetAddress_family(env, addressObj);
|
|
+ JNU_CHECK_EXCEPTION(env);
|
|
if (family == IPv6 && !ipv6_supported) {
|
|
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
|
|
"Protocol family not supported");
|
|
return;
|
|
}
|
|
-
|
|
+ JNU_CHECK_EXCEPTION(env);
|
|
if (IS_NULL(fdObj) || (ipv6_supported && IS_NULL(fd1Obj))) {
|
|
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "socket closed");
|
|
return;
|
|
@@ -459,6 +460,7 @@
|
|
return;
|
|
} else {
|
|
address = getInetAddress_addr(env, addressObj);
|
|
+ JNU_CHECK_EXCEPTION(env);
|
|
}
|
|
|
|
if (NET_InetAddressToSockaddr(env, addressObj, port, (struct sockaddr *)&lcladdr, &lcladdrlen, JNI_FALSE) != 0) {
|
|
@@ -562,8 +564,9 @@
|
|
}
|
|
|
|
addr = getInetAddress_addr(env, address);
|
|
-
|
|
+ JNU_CHECK_EXCEPTION(env);
|
|
family = getInetAddress_family(env, address);
|
|
+ JNU_CHECK_EXCEPTION(env);
|
|
if (family == IPv6 && !ipv6_supported) {
|
|
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
|
|
"Protocol family not supported");
|
|
@@ -681,6 +684,7 @@
|
|
}
|
|
|
|
family = getInetAddress_family(env, iaObj);
|
|
+ JNU_CHECK_EXCEPTION(env);
|
|
if (family == IPv4) {
|
|
fdObj = (*env)->GetObjectField(env, this, pdsi_fdID);
|
|
} else {
|
|
@@ -731,6 +735,7 @@
|
|
* Check is not necessary on these OSes */
|
|
if (connected) {
|
|
address = getInetAddress_addr(env, iaObj);
|
|
+ JNU_CHECK_EXCEPTION(env);
|
|
} else {
|
|
address = ntohl(rmtaddr.him4.sin_addr.s_addr);
|
|
}
|
|
@@ -835,6 +840,7 @@
|
|
return -1;
|
|
} else {
|
|
address = getInetAddress_addr(env, addressObj);
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
|
/* We only handle IPv4 for now. Will support IPv6 once its in the os */
|
|
family = AF_INET;
|
|
}
|
|
@@ -909,7 +915,9 @@
|
|
return 0;
|
|
}
|
|
setInetAddress_addr(env, addressObj, ntohl(remote_addr.sin_addr.s_addr));
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
|
setInetAddress_family(env, addressObj, IPv4);
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
|
|
|
/* return port */
|
|
return ntohs(remote_addr.sin_port);
|
|
@@ -1601,6 +1609,7 @@
|
|
int fam;
|
|
addr = (*env)->GetObjectArrayElement(env, addrArray, i);
|
|
fam = getInetAddress_family(env, addr);
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
|
if (fam == family) {
|
|
*iaddr = addr;
|
|
return 0;
|
|
@@ -1619,6 +1628,7 @@
|
|
}
|
|
|
|
iaddr->s_addr = htonl(getInetAddress_addr(env, addr));
|
|
+ JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
|
return 0;
|
|
}
|
|
|
|
@@ -1724,6 +1734,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) {
|
|
NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException",
|
|
@@ -1965,7 +1976,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
|
|
*/
|
|
--- icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c 2018-09-18 09:42:59.698195486 +0200
|
|
+++ icedtea-3.8.0/openjdk/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c 2018-09-18 09:45:28.247002797 +0200
|
|
@@ -413,6 +413,7 @@
|
|
fd1Obj = (*env)->GetObjectField(env, this, psi_fd1ID);
|
|
|
|
family = getInetAddress_family(env, iaObj);
|
|
+ JNU_CHECK_EXCEPTION(env);
|
|
|
|
if (family == IPv6 && !ipv6_supported) {
|
|
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
|
|
@@ -729,7 +730,9 @@
|
|
}
|
|
|
|
setInetAddress_addr(env, socketAddressObj, ntohl(him.him4.sin_addr.s_addr));
|
|
+ JNU_CHECK_EXCEPTION(env);
|
|
setInetAddress_family(env, socketAddressObj, IPv4);
|
|
+ JNU_CHECK_EXCEPTION(env);
|
|
(*env)->SetObjectField(env, socket, psi_addressID, socketAddressObj);
|
|
} else {
|
|
/* AF_INET6 -> Inet6Address */
|
|
@@ -756,6 +759,7 @@
|
|
}
|
|
setInet6Address_ipaddress(env, socketAddressObj, (char *)&him.him6.sin6_addr);
|
|
setInetAddress_family(env, socketAddressObj, IPv6);
|
|
+ JNU_CHECK_EXCEPTION(env);
|
|
setInet6Address_scopeid(env, socketAddressObj, him.him6.sin6_scope_id);
|
|
|
|
}
|