Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Libpng
提交
d3220bab
T
Third Party Libpng
项目概览
OpenHarmony
/
Third Party Libpng
大约 1 年 前同步成功
通知
4
Star
22
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Libpng
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d3220bab
编写于
8月 29, 2017
作者:
G
Glenn Randers-Pehrson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[libpng16] Revised contrib/oss-fuzz/libpng_read_fuzzer.cc
上级
a1b5be04
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
18 deletion
+19
-18
contrib/oss-fuzz/libpng_read_fuzzer.cc
contrib/oss-fuzz/libpng_read_fuzzer.cc
+19
-18
未找到文件。
contrib/oss-fuzz/libpng_read_fuzzer.cc
浏览文件 @
d3220bab
...
...
@@ -23,21 +23,6 @@
#define PNG_INTERNAL
#include "png.h"
#define PNG_CLEANUP \
if(png_handler.png_ptr) \
{ \
if (row_ptr && png_ptr) \
png_free(png_ptr, row_ptr); \
if (png_handler.end_info_ptr) \
png_destroy_read_struct(&png_handler.png_ptr, &png_handler.info_ptr,\
&png_handler.end_info_ptr); \
else if (png_handler.info_ptr) \
png_destroy_read_struct(&png_handler.png_ptr, &png_handler.info_ptr,\
nullptr); \
else \
png_destroy_read_struct(&png_handler.png_ptr, nullptr, nullptr); \
}
struct
BufState
{
const
uint8_t
*
data
;
size_t
bytes_left
;
...
...
@@ -51,7 +36,6 @@ struct PngObjectHandler {
BufState
*
buf_state
=
nullptr
;
~
PngObjectHandler
()
{
PNG_CLEANUP
delete
buf_state
;
}
};
...
...
@@ -71,6 +55,7 @@ static const int kPngHeaderSize = 8;
// Entry point for LibFuzzer.
// Roughly follows the libpng book example:
// http://www.libpng.org/pub/png/book/chapter13.html
extern
"C"
int
LLVMFuzzerTestOneInput
(
const
uint8_t
*
data
,
size_t
size
)
{
if
(
size
<
kPngHeaderSize
)
{
return
0
;
...
...
@@ -91,13 +76,14 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
png_handler
.
info_ptr
=
png_create_info_struct
(
png_handler
.
png_ptr
);
if
(
!
png_handler
.
info_ptr
)
{
PNG_CLEANUP
png_destroy_read_struct
(
&
png_handler
.
png_ptr
,
nullptr
,
nullptr
);
return
0
;
}
png_handler
.
end_info_ptr
=
png_create_info_struct
(
png_handler
.
png_ptr
);
if
(
!
png_handler
.
info_ptr
)
{
PNG_CLEANUP
png_destroy_read_struct
(
&
png_handler
.
png_ptr
,
&
png_handler
.
info_ptr
,
nullptr
);
return
0
;
}
...
...
@@ -113,6 +99,21 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
png_set_read_fn
(
png_handler
.
png_ptr
,
png_handler
.
buf_state
,
user_read_data
);
png_set_sig_bytes
(
png_handler
.
png_ptr
,
kPngHeaderSize
);
#define PNG_CLEANUP
if
(
png_handler
.
png_ptr
)
\
{
\
if
(
png_handler
.
row_ptr
)
\
png_free
(
png_handler
.
png_ptr
,
png_handler
.
row_ptr
);
\
if
(
png_handler
.
end_info_ptr
)
\
png_destroy_read_struct
(
&
png_handler
.
png_ptr
,
&
png_handler
.
info_ptr
,
\
&
png_handler
.
end_info_ptr
);
\
else
if
(
png_handler
.
info_ptr
)
\
png_destroy_read_struct
(
&
png_handler
.
png_ptr
,
&
png_handler
.
info_ptr
,
\
nullptr
);
\
else
\
png_destroy_read_struct
(
&
png_handler
.
png_ptr
,
nullptr
,
nullptr
);
\
}
if
(
setjmp
(
png_jmpbuf
(
png_handler
.
png_ptr
)))
{
PNG_CLEANUP
return
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录