summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--external/harfbuzz/UnpackedTarball_harfbuzz.mk4
-rw-r--r--external/harfbuzz/ubsan.patch20
2 files changed, 24 insertions, 0 deletions
diff --git a/external/harfbuzz/UnpackedTarball_harfbuzz.mk b/external/harfbuzz/UnpackedTarball_harfbuzz.mk
index a99f116d80ad..eea793322965 100644
--- a/external/harfbuzz/UnpackedTarball_harfbuzz.mk
+++ b/external/harfbuzz/UnpackedTarball_harfbuzz.mk
@@ -15,4 +15,8 @@ $(eval $(call gb_UnpackedTarball_update_autoconf_configs,harfbuzz))
$(eval $(call gb_UnpackedTarball_set_patchlevel,harfbuzz,0))
+$(eval $(call gb_UnpackedTarball_add_patches,harfbuzz, \
+ external/harfbuzz/ubsan.patch \
+))
+
# vim: set noet sw=4 ts=4:
diff --git a/external/harfbuzz/ubsan.patch b/external/harfbuzz/ubsan.patch
new file mode 100644
index 000000000000..a9d1b72ef1a2
--- /dev/null
+++ b/external/harfbuzz/ubsan.patch
@@ -0,0 +1,20 @@
+--- src/hb-ot-layout-gsubgpos.hh
++++ src/hb-ot-layout-gsubgpos.hh
+@@ -387,7 +387,7 @@
+ skip == matcher_t::SKIP_NO))
+ {
+ num_items--;
+- match_glyph_data++;
++ if (match_glyph_data != nullptr) match_glyph_data++;
+ return true;
+ }
+
+@@ -414,7 +414,7 @@
+ skip == matcher_t::SKIP_NO))
+ {
+ num_items--;
+- match_glyph_data++;
++ if (match_glyph_data != nullptr) match_glyph_data++;
+ return true;
+ }
+