Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
1beb0886
T
Third Party Harfbuzz
项目概览
OpenHarmony
/
Third Party Harfbuzz
接近 2 年 前同步成功
通知
1
Star
18
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Harfbuzz
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
1beb0886
编写于
3月 12, 2018
作者:
G
Garret Rieger
提交者:
Behdad Esfahbod
3月 16, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[subset] First pass at setting up a fuzzing program for hb-subset.
上级
127096e4
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
75 addition
and
1 deletion
+75
-1
src/Makefile.am
src/Makefile.am
+23
-1
test/fuzzing/Makefile.am
test/fuzzing/Makefile.am
+15
-0
test/fuzzing/hb-subset-fuzzer.cc
test/fuzzing/hb-subset-fuzzer.cc
+37
-0
未找到文件。
src/Makefile.am
浏览文件 @
1beb0886
...
@@ -17,7 +17,7 @@ check_PROGRAMS =
...
@@ -17,7 +17,7 @@ check_PROGRAMS =
# Convenience targets:
# Convenience targets:
lib
:
$(BUILT_SOURCES) libharfbuzz.la libharfbuzz-subset.la
lib
:
$(BUILT_SOURCES) libharfbuzz.la libharfbuzz-subset.la
fuzzing
:
$(BUILT_SOURCES) libharfbuzz-fuzzing.la
fuzzing
:
$(BUILT_SOURCES) libharfbuzz-fuzzing.la
libharfbuzz-subset-fuzzing.la
lib_LTLIBRARIES
=
libharfbuzz.la
lib_LTLIBRARIES
=
libharfbuzz.la
...
@@ -193,6 +193,28 @@ libharfbuzz_fuzzing_la_LIBADD = $(libharfbuzz_la_LIBADD)
...
@@ -193,6 +193,28 @@ libharfbuzz_fuzzing_la_LIBADD = $(libharfbuzz_la_LIBADD)
EXTRA_libharfbuzz_fuzzing_la_DEPENDENCIES
=
$(EXTRA_libharfbuzz_la_DEPENDENCIES)
EXTRA_libharfbuzz_fuzzing_la_DEPENDENCIES
=
$(EXTRA_libharfbuzz_la_DEPENDENCIES)
CLEANFILES
+=
libharfbuzz-fuzzing.la
CLEANFILES
+=
libharfbuzz-fuzzing.la
SUBSET_FUZZING_CPPFLAGS
=
\
-DHB_NDEBUG
\
-DHB_MAX_NESTING_LEVEL
=
3
\
-DHB_SANITIZE_MAX_EDITS
=
3
\
-DHB_SANITIZE_MAX_OPS_FACTOR
=
3
\
-DHB_SANITIZE_MAX_OPS_MIN
=
128
\
-DHB_BUFFER_MAX_LEN_FACTOR
=
3
\
-DHB_BUFFER_MAX_LEN_MIN
=
8
\
-DHB_BUFFER_MAX_LEN_DEFAULT
=
128
\
-DHB_BUFFER_MAX_OPS_FACTOR
=
8
\
-DHB_BUFFER_MAX_OPS_MIN
=
64
\
-DHB_BUFFER_MAX_OPS_DEFAULT
=
1024
\
$(NULL)
EXTRA_LTLIBRARIES
=
libharfbuzz-subset-fuzzing.la
libharfbuzz_subset_fuzzing_la_LINK
=
$(chosen_linker)
$(libharfbuzz_subset_fuzzing_la_LDFLAGS)
libharfbuzz_subset_fuzzing_la_SOURCES
=
$(libharfbuzz_subset_la_SOURCES)
libharfbuzz_subset_fuzzing_la_CPPFLAGS
=
$(HBCFLAGS)
$(SUBSET_FUZZING_CPPFLAGS)
libharfbuzz_subset_fuzzing_la_LDFLAGS
=
$(AM_LDFLAGS)
libharfbuzz_subset_fuzzing_la_LIBADD
=
$(libharfbuzz_subset_la_LIBADD)
EXTRA_libharfbuzz_subset_fuzzing_la_DEPENDENCIES
=
$(EXTRA_libharfbuzz_subset_la_DEPENDENCIES)
CLEANFILES
+=
libharfbuzz-subset-fuzzing.la
if
HAVE_ICU
if
HAVE_ICU
if
HAVE_ICU_BUILTIN
if
HAVE_ICU_BUILTIN
HBCFLAGS
+=
$(ICU_CFLAGS)
HBCFLAGS
+=
$(ICU_CFLAGS)
...
...
test/fuzzing/Makefile.am
浏览文件 @
1beb0886
...
@@ -20,6 +20,7 @@ EXTRA_DIST += \
...
@@ -20,6 +20,7 @@ EXTRA_DIST += \
check_PROGRAMS
=
\
check_PROGRAMS
=
\
hb-fuzzer
\
hb-fuzzer
\
hb-subset-fuzzer
\
$(NULL)
$(NULL)
AM_CPPFLAGS
=
\
AM_CPPFLAGS
=
\
...
@@ -46,6 +47,20 @@ hb_fuzzer_DEPENDENCIES = \
...
@@ -46,6 +47,20 @@ hb_fuzzer_DEPENDENCIES = \
lib
\
lib
\
$(NULL)
$(NULL)
hb_subset_fuzzer_SOURCES
=
\
hb-subset.hh
\
hb-subset-fuzzer.cc
\
$(NULL)
hb_subset_fuzzer_LDADD
=
\
$(top_builddir)
/src/libharfbuzz-subset-fuzzing.la
\
$(NULL)
hb_subset_fuzzer_CPPFLAGS
=
\
$(AM_CPPFLAGS)
\
$(NULL)
hb_subset_fuzzer_DEPENDENCIES
=
\
lib
\
$(NULL)
check
:
check
:
EXEEXT
=
"
$(EXEEXT)
"
srcdir
=
"
$(srcdir)
"
builddir
=
"
$(builddir)
"
$(srcdir)
/run-fuzzer-tests.py
EXEEXT
=
"
$(EXEEXT)
"
srcdir
=
"
$(srcdir)
"
builddir
=
"
$(builddir)
"
$(srcdir)
/run-fuzzer-tests.py
...
...
test/fuzzing/hb-subset-fuzzer.cc
0 → 100644
浏览文件 @
1beb0886
#include "hb-fuzzer.hh"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "hb-subset.h"
extern
"C"
int
LLVMFuzzerTestOneInput
(
const
uint8_t
*
data
,
size_t
size
)
{
hb_blob_t
*
blob
=
hb_blob_create
((
const
char
*
)
data
,
size
,
HB_MEMORY_MODE_READONLY
,
NULL
,
NULL
);
hb_face_t
*
face
=
hb_face_create
(
blob
,
0
);
hb_subset_profile_t
*
profile
=
hb_subset_profile_create
();
// TODO(grieger): Loop through common profiles (hints, no hints, etc.)
hb_subset_input_t
*
input
=
hb_subset_input_create_or_fail
();
hb_set_t
*
codepoints
=
hb_subset_input_unicode_set
(
input
);
const
hb_codepoint_t
text
[]
=
{
'A'
,
'B'
,
'C'
,
'D'
,
'E'
,
'X'
,
'Y'
,
'Z'
,
'1'
,
'2'
,
'3'
,
'@'
,
'_'
,
'%'
,
'&'
,
')'
,
'*'
,
'$'
,
'!'
};
for
(
int
i
=
0
;
i
<
sizeof
(
text
)
/
sizeof
(
hb_codepoint_t
);
i
++
)
{
hb_set_add
(
codepoints
,
text
[
i
]);
}
hb_face_t
*
result
=
hb_subset
(
face
,
profile
,
input
);
hb_subset_input_destroy
(
input
);
hb_subset_profile_destroy
(
profile
);
hb_face_destroy
(
face
);
hb_blob_destroy
(
blob
);
return
0
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录