Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
ddd885aa
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,体验更适合开发者的 AI 搜索 >>
提交
ddd885aa
编写于
10月 06, 2018
作者:
I
igerasim
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8210610: Improved LSA authentication
Reviewed-by: valeriep, mschoene, rhalade
上级
eedf142c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
27 addition
and
5 deletion
+27
-5
src/windows/native/sun/security/krb5/NativeCreds.c
src/windows/native/sun/security/krb5/NativeCreds.c
+27
-5
未找到文件。
src/windows/native/sun/security/krb5/NativeCreds.c
浏览文件 @
ddd885aa
...
@@ -76,7 +76,8 @@ BOOL native_debug = 0;
...
@@ -76,7 +76,8 @@ BOOL native_debug = 0;
BOOL
PackageConnectLookup
(
PHANDLE
,
PULONG
);
BOOL
PackageConnectLookup
(
PHANDLE
,
PULONG
);
NTSTATUS
ConstructTicketRequest
(
UNICODE_STRING
DomainName
,
NTSTATUS
ConstructTicketRequest
(
JNIEnv
*
env
,
UNICODE_STRING
DomainName
,
PKERB_RETRIEVE_TKT_REQUEST
*
outRequest
,
PKERB_RETRIEVE_TKT_REQUEST
*
outRequest
,
ULONG
*
outSize
);
ULONG
*
outSize
);
...
@@ -102,6 +103,8 @@ jobject BuildEncryptionKey(JNIEnv *env, PKERB_CRYPTO_KEY cryptoKey);
...
@@ -102,6 +103,8 @@ jobject BuildEncryptionKey(JNIEnv *env, PKERB_CRYPTO_KEY cryptoKey);
jobject
BuildTicketFlags
(
JNIEnv
*
env
,
PULONG
flags
);
jobject
BuildTicketFlags
(
JNIEnv
*
env
,
PULONG
flags
);
jobject
BuildKerberosTime
(
JNIEnv
*
env
,
PLARGE_INTEGER
kerbtime
);
jobject
BuildKerberosTime
(
JNIEnv
*
env
,
PLARGE_INTEGER
kerbtime
);
void
ThrowOOME
(
JNIEnv
*
env
,
const
char
*
szMessage
);
/*
/*
* Class: sun_security_krb5_KrbCreds
* Class: sun_security_krb5_KrbCreds
* Method: JNI_OnLoad
* Method: JNI_OnLoad
...
@@ -495,7 +498,7 @@ JNIEXPORT jobject JNICALL Java_sun_security_krb5_Credentials_acquireDefaultNativ
...
@@ -495,7 +498,7 @@ JNIEXPORT jobject JNICALL Java_sun_security_krb5_Credentials_acquireDefaultNativ
}
}
// use domain to request Ticket
// use domain to request Ticket
Status
=
ConstructTicketRequest
(
msticket
->
TargetDomainName
,
Status
=
ConstructTicketRequest
(
env
,
msticket
->
TargetDomainName
,
&
pTicketRequest
,
&
requestSize
);
&
pTicketRequest
,
&
requestSize
);
if
(
!
LSA_SUCCESS
(
Status
))
{
if
(
!
LSA_SUCCESS
(
Status
))
{
ShowNTError
(
"ConstructTicketRequest status"
,
Status
);
ShowNTError
(
"ConstructTicketRequest status"
,
Status
);
...
@@ -689,7 +692,7 @@ JNIEXPORT jobject JNICALL Java_sun_security_krb5_Credentials_acquireDefaultNativ
...
@@ -689,7 +692,7 @@ JNIEXPORT jobject JNICALL Java_sun_security_krb5_Credentials_acquireDefaultNativ
}
}
static
NTSTATUS
static
NTSTATUS
ConstructTicketRequest
(
UNICODE_STRING
DomainName
,
ConstructTicketRequest
(
JNIEnv
*
env
,
UNICODE_STRING
DomainName
,
PKERB_RETRIEVE_TKT_REQUEST
*
outRequest
,
ULONG
*
outSize
)
PKERB_RETRIEVE_TKT_REQUEST
*
outRequest
,
ULONG
*
outSize
)
{
{
NTSTATUS
Status
;
NTSTATUS
Status
;
...
@@ -736,8 +739,10 @@ ConstructTicketRequest(UNICODE_STRING DomainName,
...
@@ -736,8 +739,10 @@ ConstructTicketRequest(UNICODE_STRING DomainName,
pTicketRequest
=
(
PKERB_RETRIEVE_TKT_REQUEST
)
pTicketRequest
=
(
PKERB_RETRIEVE_TKT_REQUEST
)
LocalAlloc
(
LMEM_ZEROINIT
,
RequestSize
);
LocalAlloc
(
LMEM_ZEROINIT
,
RequestSize
);
if
(
!
pTicketRequest
)
if
(
!
pTicketRequest
)
{
ThrowOOME
(
env
,
"Can't allocate memory for ticket"
);
return
GetLastError
();
return
GetLastError
();
}
//
//
// Concatenate the target prefix with the previous response's
// Concatenate the target prefix with the previous response's
...
@@ -894,7 +899,7 @@ jobject BuildTicket(JNIEnv *env, PUCHAR encodedTicket, ULONG encodedTicketSize)
...
@@ -894,7 +899,7 @@ jobject BuildTicket(JNIEnv *env, PUCHAR encodedTicket, ULONG encodedTicketSize)
jbyteArray
ary
;
jbyteArray
ary
;
ary
=
(
*
env
)
->
NewByteArray
(
env
,
encodedTicketSize
);
ary
=
(
*
env
)
->
NewByteArray
(
env
,
encodedTicketSize
);
if
(
(
*
env
)
->
ExceptionOccurred
(
env
)
)
{
if
(
ary
==
NULL
)
{
return
(
jobject
)
NULL
;
return
(
jobject
)
NULL
;
}
}
...
@@ -940,6 +945,10 @@ jobject BuildPrincipal(JNIEnv *env, PKERB_EXTERNAL_NAME principalName,
...
@@ -940,6 +945,10 @@ jobject BuildPrincipal(JNIEnv *env, PKERB_EXTERNAL_NAME principalName,
realm
=
(
WCHAR
*
)
LocalAlloc
(
LMEM_ZEROINIT
,
realm
=
(
WCHAR
*
)
LocalAlloc
(
LMEM_ZEROINIT
,
((
domainName
.
Length
)
*
sizeof
(
WCHAR
)
+
sizeof
(
UNICODE_NULL
)));
((
domainName
.
Length
)
*
sizeof
(
WCHAR
)
+
sizeof
(
UNICODE_NULL
)));
if
(
realm
==
NULL
)
{
ThrowOOME
(
env
,
"Can't allocate memory for realm"
);
return
NULL
;
}
wcsncpy
(
realm
,
domainName
.
Buffer
,
domainName
.
Length
/
sizeof
(
WCHAR
));
wcsncpy
(
realm
,
domainName
.
Buffer
,
domainName
.
Length
/
sizeof
(
WCHAR
));
if
(
native_debug
)
{
if
(
native_debug
)
{
...
@@ -1014,6 +1023,9 @@ jobject BuildEncryptionKey(JNIEnv *env, PKERB_CRYPTO_KEY cryptoKey) {
...
@@ -1014,6 +1023,9 @@ jobject BuildEncryptionKey(JNIEnv *env, PKERB_CRYPTO_KEY cryptoKey) {
}
}
ary
=
(
*
env
)
->
NewByteArray
(
env
,
cryptoKey
->
Length
);
ary
=
(
*
env
)
->
NewByteArray
(
env
,
cryptoKey
->
Length
);
if
(
ary
==
NULL
)
{
return
(
jobject
)
NULL
;
}
(
*
env
)
->
SetByteArrayRegion
(
env
,
ary
,
(
jsize
)
0
,
cryptoKey
->
Length
,
(
*
env
)
->
SetByteArrayRegion
(
env
,
ary
,
(
jsize
)
0
,
cryptoKey
->
Length
,
(
jbyte
*
)
cryptoKey
->
Value
);
(
jbyte
*
)
cryptoKey
->
Value
);
if
((
*
env
)
->
ExceptionOccurred
(
env
))
{
if
((
*
env
)
->
ExceptionOccurred
(
env
))
{
...
@@ -1036,6 +1048,9 @@ jobject BuildTicketFlags(JNIEnv *env, PULONG flags) {
...
@@ -1036,6 +1048,9 @@ jobject BuildTicketFlags(JNIEnv *env, PULONG flags) {
ULONG
nlflags
=
htonl
(
*
flags
);
ULONG
nlflags
=
htonl
(
*
flags
);
ary
=
(
*
env
)
->
NewByteArray
(
env
,
sizeof
(
*
flags
));
ary
=
(
*
env
)
->
NewByteArray
(
env
,
sizeof
(
*
flags
));
if
(
ary
==
NULL
)
{
return
(
jobject
)
NULL
;
}
(
*
env
)
->
SetByteArrayRegion
(
env
,
ary
,
(
jsize
)
0
,
sizeof
(
*
flags
),
(
*
env
)
->
SetByteArrayRegion
(
env
,
ary
,
(
jsize
)
0
,
sizeof
(
*
flags
),
(
jbyte
*
)
&
nlflags
);
(
jbyte
*
)
&
nlflags
);
if
((
*
env
)
->
ExceptionOccurred
(
env
))
{
if
((
*
env
)
->
ExceptionOccurred
(
env
))
{
...
@@ -1088,3 +1103,10 @@ jobject BuildKerberosTime(JNIEnv *env, PLARGE_INTEGER kerbtime) {
...
@@ -1088,3 +1103,10 @@ jobject BuildKerberosTime(JNIEnv *env, PLARGE_INTEGER kerbtime) {
}
}
return
kerberosTime
;
return
kerberosTime
;
}
}
void
ThrowOOME
(
JNIEnv
*
env
,
const
char
*
szMessage
)
{
jclass
exceptionClazz
=
(
*
env
)
->
FindClass
(
env
,
"java/lang/OutOfMemoryError"
);
if
(
exceptionClazz
!=
NULL
)
{
(
*
env
)
->
ThrowNew
(
env
,
exceptionClazz
,
szMessage
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录