Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
81304e02
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
3
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
81304e02
编写于
8月 25, 2017
作者:
I
igerasim
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8186212: Improve GSS handling
Reviewed-by: weijun, ahgross
上级
42d025ef
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
23 addition
and
13 deletion
+23
-13
src/share/native/sun/security/jgss/wrapper/GSSLibStub.c
src/share/native/sun/security/jgss/wrapper/GSSLibStub.c
+23
-13
未找到文件。
src/share/native/sun/security/jgss/wrapper/GSSLibStub.c
浏览文件 @
81304e02
/*
* Copyright (c) 2005, 201
4
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 201
7
, 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
...
...
@@ -830,7 +830,7 @@ Java_sun_security_jgss_wrapper_GSSLibStub_initContext(JNIEnv *env,
{
OM_uint32
minor
,
major
;
gss_cred_id_t
credHdl
;
gss_ctx_id_t
contextHdl
;
gss_ctx_id_t
contextHdl
,
contextHdlSave
;
gss_name_t
targetName
;
gss_OID
mech
;
OM_uint32
flags
,
aFlags
;
...
...
@@ -847,7 +847,7 @@ Java_sun_security_jgss_wrapper_GSSLibStub_initContext(JNIEnv *env,
TRACE0
(
"[GSSLibStub_initContext]"
);
credHdl
=
(
gss_cred_id_t
)
jlong_to_ptr
(
pCred
);
contextHdl
=
(
gss_ctx_id_t
)
jlong_to_ptr
(
contextHdl
=
contextHdlSave
=
(
gss_ctx_id_t
)
jlong_to_ptr
(
(
*
env
)
->
GetLongField
(
env
,
jcontextSpi
,
FID_NativeGSSContext_pContext
));
targetName
=
(
gss_name_t
)
jlong_to_ptr
(
pName
);
mech
=
(
gss_OID
)
jlong_to_ptr
((
*
env
)
->
GetLongField
(
env
,
jobj
,
FID_GSSLibStub_pMech
));
...
...
@@ -882,10 +882,17 @@ Java_sun_security_jgss_wrapper_GSSLibStub_initContext(JNIEnv *env,
TRACE2
(
"[GSSLibStub_initContext] after: pContext=%ld, outToken len=%ld"
,
(
long
)
contextHdl
,
(
long
)
outToken
.
length
);
// update context handle with the latest value if changed
// this is to work with both MIT and Solaris. Former deletes half-built
// context if error occurs
if
(
contextHdl
!=
contextHdlSave
)
{
(
*
env
)
->
SetLongField
(
env
,
jcontextSpi
,
FID_NativeGSSContext_pContext
,
ptr_to_jlong
(
contextHdl
));
TRACE1
(
"[GSSLibStub_initContext] set pContext=%ld"
,
(
long
)
contextHdl
);
}
if
(
GSS_ERROR
(
major
)
==
GSS_S_COMPLETE
)
{
/* update member values if needed */
(
*
env
)
->
SetLongField
(
env
,
jcontextSpi
,
FID_NativeGSSContext_pContext
,
ptr_to_jlong
(
contextHdl
));
(
*
env
)
->
SetIntField
(
env
,
jcontextSpi
,
FID_NativeGSSContext_flags
,
aFlags
);
TRACE1
(
"[GSSLibStub_initContext] set flags=0x%x"
,
aFlags
);
...
...
@@ -939,7 +946,7 @@ Java_sun_security_jgss_wrapper_GSSLibStub_acceptContext(JNIEnv *env,
{
OM_uint32
minor
,
major
;
OM_uint32
minor2
,
major2
;
gss_ctx_id_t
contextHdl
;
gss_ctx_id_t
contextHdl
,
contextHdlSave
;
gss_cred_id_t
credHdl
;
gss_buffer_desc
inToken
;
gss_channel_bindings_t
cb
;
...
...
@@ -959,7 +966,7 @@ Java_sun_security_jgss_wrapper_GSSLibStub_acceptContext(JNIEnv *env,
TRACE0
(
"[GSSLibStub_acceptContext]"
);
contextHdl
=
(
gss_ctx_id_t
)
jlong_to_ptr
(
contextHdl
=
contextHdlSave
=
(
gss_ctx_id_t
)
jlong_to_ptr
(
(
*
env
)
->
GetLongField
(
env
,
jcontextSpi
,
FID_NativeGSSContext_pContext
));
credHdl
=
(
gss_cred_id_t
)
jlong_to_ptr
(
pCred
);
initGSSBuffer
(
env
,
jinToken
,
&
inToken
);
...
...
@@ -996,19 +1003,22 @@ Java_sun_security_jgss_wrapper_GSSLibStub_acceptContext(JNIEnv *env,
TRACE3
(
"[GSSLibStub_acceptContext] after: pCred=%ld, pContext=%ld, pDelegCred=%ld"
,
(
long
)
credHdl
,
(
long
)
contextHdl
,
(
long
)
delCred
);
if
(
GSS_ERROR
(
major
)
==
GSS_S_COMPLETE
)
{
/* update member values if needed */
// update context handle with the latest value if changed
// this is to work with both MIT and Solaris. Former deletes half-built
// context if error occurs
if
(
contextHdl
!=
contextHdlSave
)
{
(
*
env
)
->
SetLongField
(
env
,
jcontextSpi
,
FID_NativeGSSContext_pContext
,
ptr_to_jlong
(
contextHdl
));
TRACE1
(
"[GSSLibStub_acceptContext] set pContext=%ld"
,
(
long
)
contextHdl
);
ptr_to_jlong
(
contextHdl
));
TRACE1
(
"[GSSLibStub_acceptContext] set pContext=%ld"
,
(
long
)
contextHdl
);
}
if
(
GSS_ERROR
(
major
)
==
GSS_S_COMPLETE
)
{
/* update member values if needed */
// WORKAROUND for a Heimdal bug
if
(
delCred
==
GSS_C_NO_CREDENTIAL
)
{
aFlags
&=
0xfffffffe
;
}
(
*
env
)
->
SetIntField
(
env
,
jcontextSpi
,
FID_NativeGSSContext_flags
,
aFlags
);
TRACE1
(
"[GSSLibStub_acceptContext] set flags=0x%x"
,
aFlags
);
if
(
setTarget
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录