diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2021-09-01 17:18:27 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2021-09-02 08:43:53 +0200 |
commit | 2b5dee8ee86cf92ed613a9cde61b0871f97e5b87 (patch) | |
tree | 50a3f6a857da5f775050566fb44884b60c5a5256 /external | |
parent | a5bb0e66492118b79da5fef31f8d2bd686947354 (diff) |
external/cairo: Avoid UBSan invalid-null-argument
...as seen during CppunitTest_sw_uiwriter4:
> [_RUN_____] SwUiWriterTest4::testEmojiAutoCorrect
cairo-surface.c:2852:28: runtime error: null pointer passed as argument 2, which is declared to never be null
> /usr/include/string.h:44:28: note: nonnull attribute specified here
> #0 in _cairo_surface_show_text_glyphs at workdir/UnpackedTarball/cairo/src/cairo-surface.c:2852:9 (instdir/program/libcairo.so.2 +0x9ac09e)
> #1 in _cairo_gstate_show_text_glyphs at workdir/UnpackedTarball/cairo/src/cairo-gstate.c:2077:15 (instdir/program/libcairo.so.2 +0x65a4af)
> #2 in _cairo_default_context_glyphs at workdir/UnpackedTarball/cairo/src/cairo-default-context.c:1315:12 (instdir/program/libcairo.so.2 +0x62404f)
> #3 in cairo_show_glyphs at workdir/UnpackedTarball/cairo/src/cairo.c:3629:14 (instdir/program/libcairo.so.2 +0xa6c77f)
> #4 in CairoTextRender::DrawTextLayout(GenericSalLayout const&, SalGraphics const&) at vcl/unx/generic/gdi/cairotextrender.cxx:265:9 (instdir/program/libvcllo.so +0xae46aa3)
Change-Id: Ifa22046bb35a872c4db38130a7ae4c9b758ccbc6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121473
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'external')
-rw-r--r-- | external/cairo/cairo/san.patch.0 | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/external/cairo/cairo/san.patch.0 b/external/cairo/cairo/san.patch.0 index bbf8f2d626c0..e6c98859244b 100644 --- a/external/cairo/cairo/san.patch.0 +++ b/external/cairo/cairo/san.patch.0 @@ -103,6 +103,17 @@ _cairo_box_from_rectangle (&limits, &extents->unbounded); _cairo_polygon_init (&polygon, &limits, 1); } +--- src/cairo-surface.c ++++ src/cairo-surface.c +@@ -2849,7 +2849,7 @@ + + if (_cairo_scaled_font_has_color_glyphs (scaled_font)) { + utf8_copy = malloc (sizeof (char) * utf8_len); +- memcpy (utf8_copy, utf8, sizeof (char) * utf8_len); ++ if (utf8_len != 0) memcpy (utf8_copy, utf8, sizeof (char) * utf8_len); + utf8 = utf8_copy; + + status = composite_color_glyphs (surface, op, --- src/cairo-tor-scan-converter.c +++ src/cairo-tor-scan-converter.c @@ -253,7 +253,7 @@ |