Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
42e0c94b
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
42e0c94b
编写于
6月 21, 2018
作者:
I
igerasim
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8204667: Resources not freed on exception
Reviewed-by: skoivu, chegar
上级
2f15bbb0
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
44 addition
and
19 deletion
+44
-19
src/solaris/native/java/net/NetworkInterface.c
src/solaris/native/java/net/NetworkInterface.c
+4
-1
src/windows/native/java/net/NetworkInterface.c
src/windows/native/java/net/NetworkInterface.c
+10
-2
src/windows/native/java/net/NetworkInterface_winXP.c
src/windows/native/java/net/NetworkInterface_winXP.c
+30
-15
src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c
...indows/native/java/net/TwoStacksPlainDatagramSocketImpl.c
+0
-1
未找到文件。
src/solaris/native/java/net/NetworkInterface.c
浏览文件 @
42e0c94b
...
...
@@ -365,7 +365,9 @@ JNIEXPORT jobject JNICALL Java_java_net_NetworkInterface_getByInetAddress0
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
((
*
env
)
->
ExceptionCheck
(
env
))
{
goto
cleanup
;
}
if
(
address1
==
address2
)
{
match
=
JNI_TRUE
;
break
;
...
...
@@ -410,6 +412,7 @@ JNIEXPORT jobject JNICALL Java_java_net_NetworkInterface_getByInetAddress0
obj
=
createNetworkInterface
(
env
,
curr
);
}
cleanup:
// release the interface list
freeif
(
ifs
);
...
...
src/windows/native/java/net/NetworkInterface.c
浏览文件 @
42e0c94b
...
...
@@ -287,6 +287,7 @@ int enumInterfaces(JNIEnv *env, netif **netifPP)
if
(
curr
->
name
==
NULL
||
curr
->
displayName
==
NULL
)
{
if
(
curr
->
name
)
free
(
curr
->
name
);
if
(
curr
->
displayName
)
free
(
curr
->
displayName
);
free
(
curr
);
curr
=
NULL
;
}
}
...
...
@@ -593,7 +594,10 @@ jobject createNetworkInterface
/* 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
((
*
env
)
->
ExceptionCheck
(
env
))
{
free_netaddr
(
netaddrP
);
return
NULL
;
}
if
(
addrs
->
mask
!=
-
1
)
{
ibObj
=
(
*
env
)
->
NewObject
(
env
,
ni_ibcls
,
ni_ibctrID
);
if
(
ibObj
==
NULL
)
{
...
...
@@ -607,7 +611,10 @@ jobject createNetworkInterface
return
NULL
;
}
setInetAddress_addr
(
env
,
ia2Obj
,
ntohl
(
addrs
->
brdcast
.
him4
.
sin_addr
.
s_addr
));
JNU_CHECK_EXCEPTION_RETURN
(
env
,
NULL
);
if
((
*
env
)
->
ExceptionCheck
(
env
))
{
free_netaddr
(
netaddrP
);
return
NULL
;
}
(
*
env
)
->
SetObjectField
(
env
,
ibObj
,
ni_ibbroadcastID
,
ia2Obj
);
(
*
env
)
->
SetShortField
(
env
,
ibObj
,
ni_ibmaskID
,
addrs
->
mask
);
(
*
env
)
->
SetObjectArrayElement
(
env
,
bindsArr
,
bind_index
++
,
ibObj
);
...
...
@@ -618,6 +625,7 @@ jobject createNetworkInterface
if
(
iaObj
)
{
int
ret
=
setInet6Address_ipaddress
(
env
,
iaObj
,
(
jbyte
*
)
&
(
addrs
->
addr
.
him6
.
sin6_addr
.
s6_addr
));
if
(
ret
==
JNI_FALSE
)
{
free_netaddr
(
netaddrP
);
return
NULL
;
}
...
...
src/windows/native/java/net/NetworkInterface_winXP.c
浏览文件 @
42e0c94b
...
...
@@ -488,8 +488,9 @@ static jobject createNetworkInterfaceXP(JNIEnv *env, netif *ifs)
jobjectArray
addrArr
,
bindsArr
,
childArr
;
netaddr
*
addrs
;
jint
addr_index
;
int
netaddrCount
=
ifs
->
naddrs
;
netaddr
*
netaddrP
=
ifs
->
addrs
;
int
netaddrCount
=
ifs
->
naddrs
;
netaddr
*
netaddrP
=
ifs
->
addrs
;
netaddr
*
netaddrPToFree
=
NULL
;
jint
bind_index
;
/*
...
...
@@ -520,21 +521,23 @@ static jobject createNetworkInterfaceXP(JNIEnv *env, netif *ifs)
* Note that 0 is a valid number of addresses.
*/
if
(
netaddrCount
<
0
)
{
netaddrCount
=
enumAddresses_win
(
env
,
ifs
,
&
netaddrP
);
netaddrCount
=
enumAddresses_win
(
env
,
ifs
,
&
netaddrP
ToFree
);
if
(
netaddrCount
==
-
1
)
{
return
NULL
;
}
netaddrP
=
netaddrPToFree
;
}
addrArr
=
(
*
env
)
->
NewObjectArray
(
env
,
netaddrCount
,
ia_class
,
NULL
);
if
(
addrArr
==
NULL
)
{
free_netaddr
(
netaddrPToFree
);
return
NULL
;
}
bindsArr
=
(
*
env
)
->
NewObjectArray
(
env
,
netaddrCount
,
ni_ibcls
,
NULL
);
if
(
bindsArr
==
NULL
)
{
free_netaddr
(
netaddrP
);
return
NULL
;
free_netaddr
(
netaddrPToFree
);
return
NULL
;
}
addrs
=
netaddrP
;
...
...
@@ -546,26 +549,32 @@ static jobject createNetworkInterfaceXP(JNIEnv *env, netif *ifs)
if
(
addrs
->
addr
.
him
.
sa_family
==
AF_INET
)
{
iaObj
=
(
*
env
)
->
NewObject
(
env
,
ia4_class
,
ia4_ctrID
);
if
(
iaObj
==
NULL
)
{
free_netaddr
(
netaddrPToFree
);
return
NULL
;
}
/* 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
((
*
env
)
->
ExceptionCheck
(
env
))
{
free_netaddr
(
netaddrPToFree
);
return
NULL
;
}
ibObj
=
(
*
env
)
->
NewObject
(
env
,
ni_ibcls
,
ni_ibctrID
);
if
(
ibObj
==
NULL
)
{
free_netaddr
(
netaddrP
);
return
NULL
;
free_netaddr
(
netaddrPToFree
);
return
NULL
;
}
(
*
env
)
->
SetObjectField
(
env
,
ibObj
,
ni_ibaddressID
,
iaObj
);
ia2Obj
=
(
*
env
)
->
NewObject
(
env
,
ia4_class
,
ia4_ctrID
);
if
(
ia2Obj
==
NULL
)
{
free_netaddr
(
netaddrP
);
return
NULL
;
free_netaddr
(
netaddrPToFree
);
return
NULL
;
}
setInetAddress_addr
(
env
,
ia2Obj
,
ntohl
(
addrs
->
brdcast
.
him4
.
sin_addr
.
s_addr
));
JNU_CHECK_EXCEPTION_RETURN
(
env
,
NULL
);
if
((
*
env
)
->
ExceptionCheck
(
env
))
{
free_netaddr
(
netaddrPToFree
);
return
NULL
;
}
(
*
env
)
->
SetObjectField
(
env
,
ibObj
,
ni_ibbroadcastID
,
ia2Obj
);
(
*
env
)
->
SetShortField
(
env
,
ibObj
,
ni_ibmaskID
,
addrs
->
mask
);
(
*
env
)
->
SetObjectArrayElement
(
env
,
bindsArr
,
bind_index
++
,
ibObj
);
...
...
@@ -574,10 +583,12 @@ static jobject createNetworkInterfaceXP(JNIEnv *env, netif *ifs)
int
ret
;
iaObj
=
(
*
env
)
->
NewObject
(
env
,
ia6_class
,
ia6_ctrID
);
if
(
iaObj
==
NULL
)
{
free_netaddr
(
netaddrPToFree
);
return
NULL
;
}
ret
=
setInet6Address_ipaddress
(
env
,
iaObj
,
(
jbyte
*
)
&
(
addrs
->
addr
.
him6
.
sin6_addr
.
s6_addr
));
if
(
ret
==
JNI_FALSE
)
{
free_netaddr
(
netaddrPToFree
);
return
NULL
;
}
scope
=
addrs
->
addr
.
him6
.
sin6_scope_id
;
...
...
@@ -587,8 +598,8 @@ static jobject createNetworkInterfaceXP(JNIEnv *env, netif *ifs)
}
ibObj
=
(
*
env
)
->
NewObject
(
env
,
ni_ibcls
,
ni_ibctrID
);
if
(
ibObj
==
NULL
)
{
free_netaddr
(
netaddrP
);
return
NULL
;
free_netaddr
(
netaddrPToFree
);
return
NULL
;
}
(
*
env
)
->
SetObjectField
(
env
,
ibObj
,
ni_ibaddressID
,
iaObj
);
(
*
env
)
->
SetShortField
(
env
,
ibObj
,
ni_ibmaskID
,
addrs
->
mask
);
...
...
@@ -601,6 +612,8 @@ static jobject createNetworkInterfaceXP(JNIEnv *env, netif *ifs)
(
*
env
)
->
SetObjectField
(
env
,
netifObj
,
ni_addrsID
,
addrArr
);
(
*
env
)
->
SetObjectField
(
env
,
netifObj
,
ni_bindsID
,
bindsArr
);
free_netaddr
(
netaddrPToFree
);
/*
* Windows doesn't have virtual interfaces, so child array
* is always empty.
...
...
@@ -640,7 +653,7 @@ JNIEXPORT jobject JNICALL Java_java_net_NetworkInterface_getByName0_XP
}
/* if found create a NetworkInterface */
if
(
curr
!=
NULL
)
{
;
if
(
curr
!=
NULL
)
{
netifObj
=
createNetworkInterfaceXP
(
env
,
curr
);
}
...
...
@@ -767,6 +780,7 @@ JNIEXPORT jobjectArray JNICALL Java_java_net_NetworkInterface_getAll_XP
/* allocate a NetworkInterface array */
netIFArr
=
(
*
env
)
->
NewObjectArray
(
env
,
count
,
cls
,
NULL
);
if
(
netIFArr
==
NULL
)
{
free_netif
(
ifList
);
return
NULL
;
}
...
...
@@ -781,6 +795,7 @@ JNIEXPORT jobjectArray JNICALL Java_java_net_NetworkInterface_getAll_XP
netifObj
=
createNetworkInterfaceXP
(
env
,
curr
);
if
(
netifObj
==
NULL
)
{
free_netif
(
ifList
);
return
NULL
;
}
...
...
src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c
浏览文件 @
42e0c94b
...
...
@@ -445,7 +445,6 @@ Java_java_net_TwoStacksPlainDatagramSocketImpl_bind0(JNIEnv *env, jobject this,
"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
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录