Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
jenkins
提交
9bf2bb83
J
jenkins
项目概览
LinuxSuRen
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jenkins
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9bf2bb83
编写于
5月 18, 2016
作者:
R
Robert Sandell
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Allow to specify additional safe parameters in the constructor
上级
43f570f3
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
30 addition
and
50 deletion
+30
-50
core/src/main/java/hudson/model/ParametersAction.java
core/src/main/java/hudson/model/ParametersAction.java
+21
-34
test/src/test/java/hudson/model/ParametersActionTest2.java
test/src/test/java/hudson/model/ParametersActionTest2.java
+9
-16
未找到文件。
core/src/main/java/hudson/model/ParametersAction.java
浏览文件 @
9bf2bb83
...
@@ -91,6 +91,27 @@ public class ParametersAction implements RunAction2, Iterable<ParameterValue>, Q
...
@@ -91,6 +91,27 @@ public class ParametersAction implements RunAction2, Iterable<ParameterValue>, Q
public
ParametersAction
(
List
<
ParameterValue
>
parameters
)
{
public
ParametersAction
(
List
<
ParameterValue
>
parameters
)
{
this
.
parameters
=
parameters
;
this
.
parameters
=
parameters
;
String
paramNames
=
SystemProperties
.
getString
(
SAFE_PARAMETERS_SYSTEM_PROPERTY_NAME
);
safeParameters
=
new
TreeSet
<>();
if
(
paramNames
!=
null
)
{
safeParameters
.
addAll
(
Arrays
.
asList
(
paramNames
.
split
(
","
)));
}
}
/**
* Constructs a new action with additional safe parameters.
* The additional safe parameters should be only those considered safe to override the environment
* and what is declared in the project config in addition to those specified by the user in
* {@link #SAFE_PARAMETERS_SYSTEM_PROPERTY_NAME}.
* See <a href="https://issues.jenkins-ci.org/browse/SECURITY-170">SECURITY-170</a>
*
* @param parameters the parameters
* @param additionalSafeParameters additional safe parameters
* @since TODO
*/
public
ParametersAction
(
List
<
ParameterValue
>
parameters
,
Collection
<
String
>
additionalSafeParameters
)
{
this
(
parameters
);
safeParameters
.
addAll
(
additionalSafeParameters
);
}
}
public
ParametersAction
(
ParameterValue
...
parameters
)
{
public
ParametersAction
(
ParameterValue
...
parameters
)
{
...
@@ -205,7 +226,6 @@ public class ParametersAction implements RunAction2, Iterable<ParameterValue>, Q
...
@@ -205,7 +226,6 @@ public class ParametersAction implements RunAction2, Iterable<ParameterValue>, Q
public
ParametersAction
createUpdated
(
Collection
<?
extends
ParameterValue
>
overrides
)
{
public
ParametersAction
createUpdated
(
Collection
<?
extends
ParameterValue
>
overrides
)
{
if
(
overrides
==
null
)
{
if
(
overrides
==
null
)
{
ParametersAction
parametersAction
=
new
ParametersAction
(
parameters
);
ParametersAction
parametersAction
=
new
ParametersAction
(
parameters
);
loadSafeParameters
();
parametersAction
.
safeParameters
=
this
.
safeParameters
;
parametersAction
.
safeParameters
=
this
.
safeParameters
;
return
parametersAction
;
return
parametersAction
;
}
}
...
@@ -225,7 +245,6 @@ public class ParametersAction implements RunAction2, Iterable<ParameterValue>, Q
...
@@ -225,7 +245,6 @@ public class ParametersAction implements RunAction2, Iterable<ParameterValue>, Q
}
}
ParametersAction
parametersAction
=
new
ParametersAction
(
combinedParameters
);
ParametersAction
parametersAction
=
new
ParametersAction
(
combinedParameters
);
loadSafeParameters
();
parametersAction
.
safeParameters
=
this
.
safeParameters
;
parametersAction
.
safeParameters
=
this
.
safeParameters
;
return
parametersAction
;
return
parametersAction
;
}
}
...
@@ -239,7 +258,6 @@ public class ParametersAction implements RunAction2, Iterable<ParameterValue>, Q
...
@@ -239,7 +258,6 @@ public class ParametersAction implements RunAction2, Iterable<ParameterValue>, Q
public
ParametersAction
merge
(
@CheckForNull
ParametersAction
overrides
)
{
public
ParametersAction
merge
(
@CheckForNull
ParametersAction
overrides
)
{
if
(
overrides
==
null
)
{
if
(
overrides
==
null
)
{
ParametersAction
parametersAction
=
new
ParametersAction
(
parameters
);
ParametersAction
parametersAction
=
new
ParametersAction
(
parameters
);
loadSafeParameters
();
parametersAction
.
safeParameters
=
this
.
safeParameters
;
parametersAction
.
safeParameters
=
this
.
safeParameters
;
return
parametersAction
;
return
parametersAction
;
}
}
...
@@ -249,7 +267,6 @@ public class ParametersAction implements RunAction2, Iterable<ParameterValue>, Q
...
@@ -249,7 +267,6 @@ public class ParametersAction implements RunAction2, Iterable<ParameterValue>, Q
//loadSafeParameters() should have been called by createUpdated
//loadSafeParameters() should have been called by createUpdated
safe
.
addAll
(
this
.
safeParameters
);
safe
.
addAll
(
this
.
safeParameters
);
}
}
overrides
.
loadSafeParameters
();
if
(
overrides
.
safeParameters
!=
null
)
{
if
(
overrides
.
safeParameters
!=
null
)
{
safe
.
addAll
(
overrides
.
safeParameters
);
safe
.
addAll
(
overrides
.
safeParameters
);
}
}
...
@@ -323,39 +340,9 @@ public class ParametersAction implements RunAction2, Iterable<ParameterValue>, Q
...
@@ -323,39 +340,9 @@ public class ParametersAction implements RunAction2, Iterable<ParameterValue>, Q
}
}
private
boolean
isSafeParameter
(
String
name
)
{
private
boolean
isSafeParameter
(
String
name
)
{
loadSafeParameters
();
return
safeParameters
.
contains
(
name
);
return
safeParameters
.
contains
(
name
);
}
}
/**
* Combines the contents of {@link #SAFE_PARAMETERS_SYSTEM_PROPERTY_NAME}
* and {@link #getAdditionalSafeParameters()} into {@link #safeParameters}.
* @since TODO
*/
private
void
loadSafeParameters
()
{
if
(
safeParameters
==
null
)
{
String
paramNames
=
SystemProperties
.
getString
(
SAFE_PARAMETERS_SYSTEM_PROPERTY_NAME
);
safeParameters
=
new
TreeSet
<>();
if
(
paramNames
!=
null
)
{
safeParameters
.
addAll
(
Arrays
.
asList
(
paramNames
.
split
(
","
)));
}
safeParameters
.
addAll
(
getAdditionalSafeParameters
());
}
}
/**
* Provides a list of parameter names considered safe by the class overriding this action.
* Plugins can extend this when scheduling a build with the built in parameters it has.
* Whatever the user provides in {@link #SAFE_PARAMETERS_SYSTEM_PROPERTY_NAME} or
* {@link #KEEP_UNDEFINED_PARAMETERS_SYSTEM_PROPERTY_NAME} still counts.
*
* @return an additional list of safe parameter names
* @since TODO
*/
protected
Collection
<
String
>
getAdditionalSafeParameters
()
{
return
Collections
.
emptyList
();
}
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
ParametersAction
.
class
.
getName
());
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
ParametersAction
.
class
.
getName
());
}
}
test/src/test/java/hudson/model/ParametersActionTest2.java
浏览文件 @
9bf2bb83
...
@@ -160,12 +160,15 @@ public class ParametersActionTest2 {
...
@@ -160,12 +160,15 @@ public class ParametersActionTest2 {
new
StringParameterDefinition
(
"bar"
,
"bar"
))));
new
StringParameterDefinition
(
"bar"
,
"bar"
))));
try
{
try
{
ParametersAction
action
=
new
TestParametersAction
(
ParametersAction
action
=
new
ParametersAction
(
new
StringParameterValue
(
"foo"
,
"baz"
),
Arrays
.<
ParameterValue
>
asList
(
new
StringParameterValue
(
"bar"
,
"bar"
),
new
StringParameterValue
(
"foo"
,
"baz"
),
new
StringParameterValue
(
"whitelisted1"
,
"x"
),
new
StringParameterValue
(
"bar"
,
"bar"
),
new
StringParameterValue
(
"whitelisted2"
,
"y"
),
new
StringParameterValue
(
"whitelisted1"
,
"x"
),
new
StringParameterValue
(
"whitelisted3"
,
"y"
));
new
StringParameterValue
(
"whitelisted2"
,
"y"
),
new
StringParameterValue
(
"whitelisted3"
,
"y"
)
),
Arrays
.
asList
(
"whitelisted1"
,
"whitelisted2"
));
FreeStyleBuild
build
=
j
.
assertBuildStatusSuccess
(
p
.
scheduleBuild2
(
0
,
new
Cause
.
UserIdCause
(),
action
));
FreeStyleBuild
build
=
j
.
assertBuildStatusSuccess
(
p
.
scheduleBuild2
(
0
,
new
Cause
.
UserIdCause
(),
action
));
assertTrue
(
"whitelisted1 parameter is listed in getParameters"
,
assertTrue
(
"whitelisted1 parameter is listed in getParameters"
,
...
@@ -286,16 +289,6 @@ public class ParametersActionTest2 {
...
@@ -286,16 +289,6 @@ public class ParametersActionTest2 {
return
false
;
return
false
;
}
}
public
static
class
TestParametersAction
extends
ParametersAction
{
public
TestParametersAction
(
ParameterValue
...
parameters
)
{
super
(
parameters
);
}
@Override
protected
Collection
<
String
>
getAdditionalSafeParameters
()
{
return
Arrays
.
asList
(
"whitelisted1"
,
"whitelisted2"
);
}
}
public
static
class
ParametersCheckBuilder
extends
Builder
{
public
static
class
ParametersCheckBuilder
extends
Builder
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录