summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2023-05-11 10:39:01 +0100
committerCaolán McNamara <caolanm@redhat.com>2023-05-11 14:38:36 +0200
commit354cfa20af48207ac35ac14b832b7e44836726d7 (patch)
tree4310ec1af923b7b4d5845027cd79d10939d199ed
parent39848b5f802c539e5d630bb7905d3d9b8d966c26 (diff)
ofz#57493 Timeout in _cairo_bo_event_queue_sort with > 200000 edges
Change-Id: Id925da604647973977c25bbbfa57b1a69382e063 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151665 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--external/cairo/UnpackedTarball_cairo.mk1
-rw-r--r--external/cairo/cairo/cairo.ofz57493-Timeout.patch.114
2 files changed, 15 insertions, 0 deletions
diff --git a/external/cairo/UnpackedTarball_cairo.mk b/external/cairo/UnpackedTarball_cairo.mk
index de1d9296434d..a3598f0d5150 100644
--- a/external/cairo/UnpackedTarball_cairo.mk
+++ b/external/cairo/UnpackedTarball_cairo.mk
@@ -30,6 +30,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,cairo,\
external/cairo/cairo/0025-libtool-pass-use-ld.patch \
external/cairo/cairo/libcairo-bundled-soname.patch.0 \
external/cairo/cairo/cairo-fd-hack.patch.0 \
+ external/cairo/cairo/cairo.ofz57493-Timeout.patch.1 \
))
ifeq ($(OS),iOS)
diff --git a/external/cairo/cairo/cairo.ofz57493-Timeout.patch.1 b/external/cairo/cairo/cairo.ofz57493-Timeout.patch.1
new file mode 100644
index 000000000000..ba58973eee9c
--- /dev/null
+++ b/external/cairo/cairo/cairo.ofz57493-Timeout.patch.1
@@ -0,0 +1,14 @@
+--- a/src/cairo-bentley-ottmann-rectilinear.c 2023-05-11 10:34:16.206027850 +0100
++++ b/src/cairo-bentley-ottmann-rectilinear.c 2023-05-11 10:34:21.480787694 +0100
+@@ -455,6 +455,11 @@
+ if (unlikely (polygon->num_edges == 0))
+ return CAIRO_STATUS_SUCCESS;
+
++#if defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION)
++ if (unlikely (polygon->num_edges > 200000))
++ return CAIRO_STATUS_SUCCESS;
++#endif
++
+ num_events = 2 * polygon->num_edges;
+
+ events = stack_events;