dev/null
|binary
src/hb-aat-layout-common.hh
| 23 +++++-
src/hb-static.cc
| 4 +
test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5634395566768128
|binary
test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5718464350650368
|binary
test/fuzzing/run-shape-fuzzer-tests.py
| 38 ++++++++--
util/options.cc
| 2
7 files changed, 59 insertions(+), 8 deletions(-)
New commits:
commit 9e8a9b846ec24e9124d61706272a0e5fa58d7a24
Author: Behdad Esfahbod <[email protected]>
Date: Wed Oct 17 21:41:25 2018 -0700
[aat] Another try at fixing Lookup null objects...
Ugly as hell, and don't even understand why some bits are needed.
But the logic is sound.
diff --git a/src/hb-aat-layout-common.hh b/src/hb-aat-layout-common.hh
index 37f6d03c..741e5020 100644
--- a/src/hb-aat-layout-common.hh
+++ b/src/hb-aat-layout-common.hh
@@ -291,10 +291,27 @@ struct Lookup
LookupFormat8<T> format8;
} u;
public:
- DEFINE_SIZE_MIN (0); /* 0 min size, makes sure this cannot be used on null
pool,
- * because Format0 has unbounded size depending on
num_glyphs.
- * We cannot define custom null bytes for a template :(.
*/
+ DEFINE_SIZE_UNION (2, format);
};
+/* Lookup 0 has unbounded size (dependant on num_glyphs). So we need to
defined
+ * special NULL objects for Lookup<> objects, but since it's template our
macros
+ * don't work. So we have to hand-code them here. UGLY. */
+} /* Close namespace. */
+/* Ugly hand-coded null objects for template Lookup<> :(. */
+extern HB_INTERNAL const unsigned char _hb_Null_AAT_Lookup[2];
+template <>
+/*static*/ inline const AAT::Lookup<OT::HBUINT16>&
Null<AAT::Lookup<OT::HBUINT16> > (void) {
+ return *reinterpret_cast<const AAT::Lookup<OT::HBUINT16> *>
(_hb_Null_AAT_Lookup);
+}
+template <>
+/*static*/ inline const AAT::Lookup<OT::HBUINT32>&
Null<AAT::Lookup<OT::HBUINT32> > (void) {
+ return *reinterpret_cast<const AAT::Lookup<OT::HBUINT32> *>
(_hb_Null_AAT_Lookup);
+}
+template <>
+/*static*/ inline const AAT::Lookup<OT::Offset<OT::HBUINT16, false>>&
Null<AAT::Lookup<OT::Offset<OT::HBUINT16, false>> > (void) {
+ return *reinterpret_cast<const AAT::Lookup<OT::Offset<OT::HBUINT16, false>>
*> (_hb_Null_AAT_Lookup);
+}
+namespace AAT {
/*
diff --git a/src/hb-static.cc b/src/hb-static.cc
index 5112d77b..0b92443e 100644
--- a/src/hb-static.cc
+++ b/src/hb-static.cc
@@ -41,6 +41,10 @@ hb_vector_size_impl_t const _hb_NullPool[(HB_NULL_POOL_SIZE
+ sizeof (hb_vector_
DEFINE_NULL_NAMESPACE_BYTES (OT, Index) = {0xFF,0xFF};
DEFINE_NULL_NAMESPACE_BYTES (OT, LangSys) = {0x00,0x00, 0xFF,0xFF, 0x00,0x00};
DEFINE_NULL_NAMESPACE_BYTES (OT, RangeRecord) = {0x00,0x01, 0x00,0x00, 0x00,
0x00};
+/* Hand-coded because Lookup is a template.
+ * Not sure why I need the extern "C" :(.
+ * Sad. */
+extern "C" HB_INTERNAL const unsigned char _hb_Null_AAT_Lookup[2] = {0xFF,
0xFF};
void
commit 191eef823fe95355425621f8e002dfe7fe632383
Author: Ebrahim Byagowi <[email protected]>
Date: Thu Oct 18 08:04:18 2018 +0330
[test] Remove not-fixed yet testcases (#1268)
I added them but now that I think, it is a bad idea to have them as
fuzzing bots will find good seeds to tweak in order to find easy new
testcases which causes duplicated issues.
diff --git
a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4548492505645056
b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4548492505645056
deleted file mode 100644
index 065080f3..00000000
Binary files
a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4548492505645056
and /dev/null differ
diff --git
a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6210176798425088
b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6210176798425088
deleted file mode 100644
index 1c62961e..00000000
Binary files
a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6210176798425088
and /dev/null differ
diff --git
a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5738888765636608
b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5738888765636608
deleted file mode 100644
index 28e72df7..00000000
Binary files
a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5738888765636608
and /dev/null differ
commit 392e1f4ddd7eb649e1a71755b9bcf6431739f98f
Author: Ebrahim Byagowi <[email protected]>
Date: Thu Oct 18 07:42:20 2018 +0330
[test/shape-fuzzer] fail on timeout and ubsan errors (#1267)
diff --git a/test/fuzzing/run-shape-fuzzer-tests.py
b/test/fuzzing/run-shape-fuzzer-tests.py
index 074ecc8e..8fadd167 100755
--- a/test/fuzzing/run-shape-fuzzer-tests.py
+++ b/test/fuzzing/run-shape-fuzzer-tests.py
@@ -2,7 +2,36 @@
from __future__ import print_function, division, absolute_import
-import sys, os, subprocess
+import sys, os, subprocess, tempfile, threading
+
+
+def cmd(command):
+ # https://stackoverflow.com/a/4408409
+ # https://stackoverflow.com/a/10012262
+ with tempfile.TemporaryFile() as tempf:
+ p = subprocess.Popen (command, stderr=tempf)
+ is_killed = {'value': False}
+
+ def timeout(p, is_killed):
+ is_killed['value'] = True
+ p.kill()
+ timer = threading.Timer (2, timeout, [p, is_killed])
+
+ try:
+ timer.start()
+ p.wait ()
+ tempf.seek (0)
+ text = tempf.read().decode ("utf-8").strip ()
+ returncode = p.returncode
+ finally:
+ timer.cancel()
+
+ if is_killed['value']:
+ text = 'error: timeout, ' + text
+ returncode = 1
+
+ return text, returncode
+
srcdir = os.environ.get ("srcdir", ".")
EXEEXT = os.environ.get ("EXEEXT", "")
@@ -24,10 +53,11 @@ parent_path = os.path.join (srcdir, "fonts")
for file in os.listdir (parent_path):
path = os.path.join(parent_path, file)
- p = subprocess.Popen ([hb_shape_fuzzer, path])
+ text, returncode = cmd ([hb_shape_fuzzer, path])
+ print (text)
- if p.wait () != 0:
- print ('failure on %s', font)
+ if returncode != 0 or 'error' in text:
+ print ('failure on %s' % file)
fails = fails + 1
if fails:
commit eeddda3ec6c28b411d33c74938ec6198c7f6888d
Author: Ebrahim Byagowi <[email protected]>
Date: Thu Oct 18 07:38:47 2018 +0330
[util] Better file-not-found error from hb-shape / hb-view
fixes #1266
diff --git a/util/options.cc b/util/options.cc
index 26b0bd0a..5661cd05 100644
--- a/util/options.cc
+++ b/util/options.cc
@@ -660,7 +660,7 @@ font_options_t::get_font (void) const
blob = hb_blob_create_from_file (font_path);
if (blob == hb_blob_get_empty ())
- fail (false, "No such file or directory");
+ fail (false, "Couldn't read or find %s, or it was empty.", font_path);
/* Create the face */
hb_face_t *face = hb_face_create (blob, face_index);
commit 751c10e55e43e2266a5bba024d560c5127fae4b8
Author: Ebrahim Byagowi <[email protected]>
Date: Thu Oct 18 06:36:48 2018 +0330
[fuzz] Add more new testcases
diff --git
a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5718464350650368
b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5718464350650368
new file mode 100644
index 00000000..d511e9d1
Binary files /dev/null and
b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5718464350650368
differ
diff --git
a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5738888765636608
b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5738888765636608
new file mode 100644
index 00000000..28e72df7
Binary files /dev/null and
b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5738888765636608
differ
commit fd282eb3285e6d20f77e8a3a7237b677433ccbb4
Author: Ebrahim Byagowi <[email protected]>
Date: Thu Oct 18 06:33:39 2018 +0330
[fuzz] Add a new testcase
diff --git
a/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5634395566768128
b/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5634395566768128
new file mode 100644
index 00000000..cd1a2934
Binary files /dev/null and
b/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5634395566768128
differ
_______________________________________________
HarfBuzz mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/harfbuzz