Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
yiicenne
DolphinScheduler
提交
a8d19f27
DolphinScheduler
项目概览
yiicenne
/
DolphinScheduler
与 Fork 源项目一致
Fork自
apache / DolphinScheduler
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
DolphinScheduler
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
a8d19f27
编写于
1月 06, 2022
作者:
大数据猿人
提交者:
GitHub
1月 06, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix this issue (#7828)
上级
0911fd71
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
7 deletion
+9
-7
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
...eduler/api/service/impl/ProcessDefinitionServiceImpl.java
+9
-7
未找到文件。
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
浏览文件 @
a8d19f27
...
...
@@ -900,9 +900,9 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro
List
<
ProcessTaskRelationLog
>
processTaskRelationList
=
new
ArrayList
<>();
// for Zip Bomb Attack
int
THRESHOLD_ENTRIES
=
10000
;
int
THRESHOLD_SIZE
=
1000000000
;
// 1 GB
double
THRESHOLD_RATIO
=
10
;
final
int
THRESHOLD_ENTRIES
=
10000
;
final
int
THRESHOLD_SIZE
=
1000000000
;
// 1 GB
final
double
THRESHOLD_RATIO
=
10
;
int
totalEntryArchive
=
0
;
int
totalSizeEntry
=
0
;
// In most cases, there will be only one data source
...
...
@@ -921,7 +921,7 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro
ZipEntry
entry
;
while
((
entry
=
zIn
.
getNextEntry
())
!=
null
)
{
totalEntryArchive
++;
totalEntryArchive
++;
int
totalSizeArchive
=
0
;
if
(!
entry
.
isDirectory
())
{
StringBuilder
sql
=
new
StringBuilder
();
...
...
@@ -934,7 +934,7 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro
totalSizeEntry
+=
nBytes
;
totalSizeArchive
+=
nBytes
;
long
compressionRatio
=
totalSizeEntry
/
entry
.
getCompressedSize
();
if
(
compressionRatio
>
THRESHOLD_RATIO
)
{
if
(
compressionRatio
>
THRESHOLD_RATIO
)
{
throw
new
IllegalStateException
(
"ratio between compressed and uncompressed data is highly suspicious, looks like a Zip Bomb Attack"
);
}
int
commentIndex
=
line
.
indexOf
(
"-- "
);
...
...
@@ -995,11 +995,11 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro
taskNameToUpstream
.
put
(
taskDefinition
.
getName
(),
upstreams
);
}
if
(
totalSizeArchive
>
THRESHOLD_SIZE
)
{
if
(
totalSizeArchive
>
THRESHOLD_SIZE
)
{
throw
new
IllegalStateException
(
"the uncompressed data size is too much for the application resource capacity"
);
}
if
(
totalEntryArchive
>
THRESHOLD_ENTRIES
)
{
if
(
totalEntryArchive
>
THRESHOLD_ENTRIES
)
{
throw
new
IllegalStateException
(
"too much entries in this archive, can lead to inodes exhaustion of the system"
);
}
}
...
...
@@ -1166,6 +1166,8 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro
}
processDefinition
.
setLocations
(
newArrayNode
.
toString
());
}
processDefinition
.
setCreateTime
(
new
Date
());
processDefinition
.
setUpdateTime
(
new
Date
());
Map
<
String
,
Object
>
createDagResult
=
createDagDefine
(
loginUser
,
taskRelationLogList
,
processDefinition
,
Lists
.
newArrayList
());
if
(
Status
.
SUCCESS
.
equals
(
createDagResult
.
get
(
Constants
.
STATUS
)))
{
putMsg
(
createDagResult
,
Status
.
SUCCESS
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录