Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
2c7f8030
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,发现更多精彩内容 >>
提交
2c7f8030
编写于
7月 05, 2011
作者:
C
coffeys
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7041125: LDAP API does not catch malformed filters that contain two operands for the ! operator
Reviewed-by: weijun, xuelei
上级
97a0c859
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
26 addition
and
13 deletion
+26
-13
src/share/classes/com/sun/jndi/ldap/Filter.java
src/share/classes/com/sun/jndi/ldap/Filter.java
+19
-11
test/com/sun/jndi/ldap/InvalidLdapFilters.java
test/com/sun/jndi/ldap/InvalidLdapFilters.java
+7
-2
未找到文件。
src/share/classes/com/sun/jndi/ldap/Filter.java
浏览文件 @
2c7f8030
/*
* Copyright (c) 1999, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 201
1
, 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
...
...
@@ -632,15 +632,17 @@ final class Filter {
}
}
// The complex filter types look like:
// "&(type=val)(type=val)"
// "|(type=val)(type=val)"
// "!(type=val)"
//
// The filtOffset[0] pointing to the '&', '|', or '!'.
//
private
static
void
encodeComplexFilter
(
BerEncoder
ber
,
byte
[]
filter
,
int
filterType
,
int
filtOffset
[],
int
filtEnd
)
throws
IOException
,
NamingException
{
//
// We have a complex filter of type "&(type=val)(type=val)"
// with filtOffset[0] pointing to the &
//
if
(
dbg
)
{
dprint
(
"encComplexFilter: "
,
filter
,
filtOffset
[
0
],
filtEnd
);
dprint
(
", type: "
+
Integer
.
toString
(
filterType
,
16
));
...
...
@@ -652,7 +654,7 @@ final class Filter {
ber
.
beginSeq
(
filterType
);
int
[]
parens
=
findRightParen
(
filter
,
filtOffset
,
filtEnd
);
encodeFilterList
(
ber
,
filter
,
parens
[
0
],
parens
[
1
]);
encodeFilterList
(
ber
,
filter
,
filterType
,
parens
[
0
],
parens
[
1
]);
ber
.
endSeq
();
...
...
@@ -706,7 +708,7 @@ final class Filter {
// Encode filter list of type "(filter1)(filter2)..."
//
private
static
void
encodeFilterList
(
BerEncoder
ber
,
byte
[]
filter
,
int
start
,
int
end
)
throws
IOException
,
NamingException
{
int
filterType
,
int
start
,
int
end
)
throws
IOException
,
NamingException
{
if
(
dbg
)
{
dprint
(
"encFilterList: "
,
filter
,
start
,
end
);
...
...
@@ -714,12 +716,16 @@ final class Filter {
}
int
filtOffset
[]
=
new
int
[
1
];
for
(
filtOffset
[
0
]
=
start
;
filtOffset
[
0
]
<
end
;
filtOffset
[
0
]++)
{
int
listNumber
=
0
;
for
(
filtOffset
[
0
]
=
start
;
filtOffset
[
0
]
<
end
;
filtOffset
[
0
]++)
{
if
(
Character
.
isSpaceChar
((
char
)
filter
[
filtOffset
[
0
]]))
continue
;
if
((
filterType
==
LDAP_FILTER_NOT
)
&&
(
listNumber
>
0
))
{
throw
new
InvalidSearchFilterException
(
"Filter (!) cannot be followed by more than one filters"
);
}
if
(
filter
[
filtOffset
[
0
]]
==
'('
)
{
continue
;
}
...
...
@@ -733,6 +739,8 @@ final class Filter {
newfilter
[
0
]
=
(
byte
)
'('
;
newfilter
[
len
+
1
]
=
(
byte
)
')'
;
encodeFilter
(
ber
,
newfilter
,
0
,
newfilter
.
length
);
listNumber
++;
}
if
(
dbg
)
{
...
...
test/com/sun/jndi/ldap/InvalidLdapFilters.java
浏览文件 @
2c7f8030
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2010,
2011,
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
...
...
@@ -23,8 +23,10 @@
/**
* @test
* @bug 6916202
* @bug 6916202
7041125
* @summary More cases of invalid ldap filters accepted and processed
* LDAP API does not catch malformed filters that contain two operands
* for the ! operator
* @run main/othervm InvalidLdapFilters valid (cn=Babs)
* @run main/othervm InvalidLdapFilters valid (&(cn=Bob))
* @run main/othervm InvalidLdapFilters valid (&(objectClass=*)(uid=*))
...
...
@@ -34,6 +36,7 @@
* @run main/othervm InvalidLdapFilters valid (!(!(cn=Tim)))
* @run main/othervm InvalidLdapFilters valid (!(&(objectClass=*)(uid=*)))
* @run main/othervm InvalidLdapFilters valid (!(|(objectClass=*)(uid=*)))
* @run main/othervm InvalidLdapFilters valid (&(objectClass=*)(!(uid=*)))
* @run main/othervm InvalidLdapFilters valid (o=univ*of*mich*)
* @run main/othervm InvalidLdapFilters valid (seeAlso=)
* @run main/othervm InvalidLdapFilters valid (cn:caseExactMatch:=Flintstone)
...
...
@@ -75,6 +78,8 @@
"((objectCategory=person)(cn=u)(!(cn=u2*)))"
* @run main/othervm InvalidLdapFilters invalid
"((&(objectClass=user)(cn=andy*)(cn=steve*)(cn=bob*)))"
* @run main/othervm InvalidLdapFilters invalid
(&(objectClass=Person)(!(sn=Jensen)(cn=Bab)))
*
* @author Xuelei Fan
*/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录