update to cairo-1.17.4

This commit is contained in:
shirely16 2021-11-22 18:16:18 +08:00
parent da56e08f5f
commit 0f9d58cc7b
5 changed files with 85 additions and 232 deletions

View File

@ -1,30 +0,0 @@
From 90e85c2493fdfa3551f202ff10282463f1e36645 Mon Sep 17 00:00:00 2001
From: Carlos Garcia Campos <cgarcia@igalia.com>
Date: Mon, 19 Nov 2018 12:33:07 +0100
Subject: [PATCH] ft: Use FT_Done_MM_Var instead of free when available in
cairo_ft_apply_variations
Fixes a crash when using freetype >= 2.9
---
src/cairo-ft-font.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c
index 325dd61b4..981973f78 100644
--- a/src/cairo-ft-font.c
+++ b/src/cairo-ft-font.c
@@ -2393,7 +2393,11 @@ skip:
done:
free (coords);
free (current_coords);
+#if HAVE_FT_DONE_MM_VAR
+ FT_Done_MM_Var (face->glyph->library, ft_mm_var);
+#else
free (ft_mm_var);
+#endif
}
}
--
2.19.2

View File

@ -1,56 +0,0 @@
From 79ad01724161502e8d9d2bd384ff1f0174e5df6e Mon Sep 17 00:00:00 2001
From: Matthias Clasen <mclasen@redhat.com>
Date: Thu, 30 May 2019 07:30:55 -0400
Subject: [PATCH] Fix a thinko in composite_color_glyphs
We can't just move around the contents of the
passed-in string, we need to make a copy. This
was showing up as memory corruption in pango.
See https://gitlab.gnome.org/GNOME/pango/issues/346
---
src/cairo-surface.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/cairo-surface.c b/src/cairo-surface.c
index c30f84087..e112b660a 100644
--- a/src/cairo-surface.c
+++ b/src/cairo-surface.c
@@ -2820,6 +2820,7 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
const cairo_clip_t *clip)
{
cairo_int_status_t status;
+ char *utf8_copy = NULL;
TRACE ((stderr, "%s\n", __FUNCTION__));
if (unlikely (surface->status))
@@ -2847,6 +2848,10 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
status = CAIRO_INT_STATUS_UNSUPPORTED;
if (_cairo_scaled_font_has_color_glyphs (scaled_font)) {
+ utf8_copy = malloc (sizeof (char) * utf8_len);
+ memcpy (utf8_copy, utf8, sizeof (char) * utf8_len);
+ utf8 = utf8_copy;
+
status = composite_color_glyphs (surface, op,
source,
(char *)utf8, &utf8_len,
@@ -2861,6 +2866,8 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
if (num_glyphs == 0)
goto DONE;
}
+ else
+ utf8_copy = NULL;
/* The logic here is duplicated in _cairo_analysis_surface show_glyphs and
* show_text_glyphs. Keep in synch. */
@@ -2918,6 +2925,9 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
surface->serial++;
}
+ if (utf8_copy)
+ free (utf8_copy);
+
return _cairo_surface_set_error (surface, status);
}

View File

@ -1,116 +0,0 @@
From ef959bc76e65ea0b0d4ba3ee50dfbce31c3484ad Mon Sep 17 00:00:00 2001
From: Marek Kasik <mkasik@redhat.com>
Date: Fri, 27 Mar 2020 19:39:46 +0100
Subject: [PATCH] cff: Allow empty array of operands for certain operators
Operators BlueValues, OtherBlues, FamilyBlues, FamilyOtherBlues,
StemSnapH and StemSnapV have operands of type delta which can be
a number or an array of delta-encoded numbers. This array can be
empty according to freetype developers.
This commit checks whether current operator is among those listed
and permits empty operand in such case.
---
src/cairo-cff-subset.c | 78 ++++++++++++++++++++++++++----------------
1 file changed, 49 insertions(+), 29 deletions(-)
diff --git a/src/cairo-cff-subset.c b/src/cairo-cff-subset.c
index 37727eddb..fce4195e9 100644
--- a/src/cairo-cff-subset.c
+++ b/src/cairo-cff-subset.c
@@ -56,30 +56,36 @@
/* CFF Dict Operators. If the high byte is 0 the command is encoded
* with a single byte. */
-#define BASEFONTNAME_OP 0x0c16
-#define CIDCOUNT_OP 0x0c22
-#define CHARSET_OP 0x000f
-#define CHARSTRINGS_OP 0x0011
-#define COPYRIGHT_OP 0x0c00
-#define DEFAULTWIDTH_OP 0x0014
-#define ENCODING_OP 0x0010
-#define FAMILYNAME_OP 0x0003
-#define FDARRAY_OP 0x0c24
-#define FDSELECT_OP 0x0c25
-#define FONTBBOX_OP 0x0005
-#define FONTMATRIX_OP 0x0c07
-#define FONTNAME_OP 0x0c26
-#define FULLNAME_OP 0x0002
-#define LOCAL_SUB_OP 0x0013
-#define NOMINALWIDTH_OP 0x0015
-#define NOTICE_OP 0x0001
-#define POSTSCRIPT_OP 0x0c15
-#define PRIVATE_OP 0x0012
-#define ROS_OP 0x0c1e
-#define UNIQUEID_OP 0x000d
-#define VERSION_OP 0x0000
-#define WEIGHT_OP 0x0004
-#define XUID_OP 0x000e
+#define BASEFONTNAME_OP 0x0c16
+#define CIDCOUNT_OP 0x0c22
+#define CHARSET_OP 0x000f
+#define CHARSTRINGS_OP 0x0011
+#define COPYRIGHT_OP 0x0c00
+#define DEFAULTWIDTH_OP 0x0014
+#define ENCODING_OP 0x0010
+#define FAMILYNAME_OP 0x0003
+#define FDARRAY_OP 0x0c24
+#define FDSELECT_OP 0x0c25
+#define FONTBBOX_OP 0x0005
+#define FONTMATRIX_OP 0x0c07
+#define FONTNAME_OP 0x0c26
+#define FULLNAME_OP 0x0002
+#define LOCAL_SUB_OP 0x0013
+#define NOMINALWIDTH_OP 0x0015
+#define NOTICE_OP 0x0001
+#define POSTSCRIPT_OP 0x0c15
+#define PRIVATE_OP 0x0012
+#define ROS_OP 0x0c1e
+#define UNIQUEID_OP 0x000d
+#define VERSION_OP 0x0000
+#define WEIGHT_OP 0x0004
+#define XUID_OP 0x000e
+#define BLUEVALUES_OP 0x0006
+#define OTHERBLUES_OP 0x0007
+#define FAMILYBLUES_OP 0x0008
+#define FAMILYOTHERBLUES_OP 0x0009
+#define STEMSNAPH_OP 0x0c0c
+#define STEMSNAPV_OP 0x0c0d
#define NUM_STD_STRINGS 391
@@ -615,13 +621,27 @@ cff_dict_create_operator (int operator,
return _cairo_error (CAIRO_STATUS_NO_MEMORY);
_cairo_dict_init_key (op, operator);
- op->operand = _cairo_malloc (size);
- if (unlikely (op->operand == NULL)) {
- free (op);
- return _cairo_error (CAIRO_STATUS_NO_MEMORY);
+ if (size != 0) {
+ op->operand = _cairo_malloc (size);
+ if (unlikely (op->operand == NULL)) {
+ free (op);
+ return _cairo_error (CAIRO_STATUS_NO_MEMORY);
+ }
+ memcpy (op->operand, operand, size);
+ } else {
+ op->operand = NULL;
+ /* Delta-encoded arrays can be empty. */
+ if (operator != BLUEVALUES_OP &&
+ operator != OTHERBLUES_OP &&
+ operator != FAMILYBLUES_OP &&
+ operator != FAMILYOTHERBLUES_OP &&
+ operator != STEMSNAPH_OP &&
+ operator != STEMSNAPV_OP) {
+ free (op);
+ return _cairo_error (CAIRO_STATUS_NO_MEMORY);
+ }
}
- memcpy (op->operand, operand, size);
op->operand_length = size;
op->operand_offset = -1;
--
2.26.0

View File

@ -1,29 +1,24 @@
%global cairogl --disable-gl %global cairogl --disable-gl
Name: cairo Name: cairo
Version: 1.16.0 Version: 1.17.4
Release: 5 Release: 1
Summary: A 2D graphics library Summary: A 2D graphics library
License: LGPLv2 or MPLv1.1 License: LGPLv2 or MPLv1.1
URL: http://cairographics.org URL: http://cairographics.org
Source0: http://cairographics.org/releases/%{name}-%{version}.tar.xz Source0: http://cairographics.org/napshots/%{name}-%{version}.tar.xz
Patch0001: 0001-Set-default-LCD-filter-to-FreeType-s-default.patch Patch0001: 0001-Set-default-LCD-filter-to-FreeType-s-default.patch
Patch0002: 0002-ft-Use-FT_Done_MM_Var-instead-of-free-when-available.patch
Patch0003: 0003-cairo-composite_color_glyphs.patch
Patch0004: 0004-cff-Allow-empty-array-of-operands-for-certain-operat.patch
Patch6000: CVE-2019-6461.patch Patch6000: CVE-2019-6461.patch
Patch6001: CVE-2019-6462.patch Patch6001: CVE-2019-6462.patch
Patch6002: backport-CVE-2020-35492.patch Patch6002: backport-CVE-2020-35492.patch
BuildRequires: gcc BuildRequires: gcc make
BuildRequires: pkgconfig glib2-devel librsvg2-devel BuildRequires: pkgconfig glib2-devel librsvg2-devel
BuildRequires: libXrender-devel libX11-devel libpng-devel libxml2-devel BuildRequires: libXrender-devel libX11-devel libpng-devel libxml2-devel
BuildRequires: pixman-devel >= 0.30.0 BuildRequires: pixman-devel >= 0.36.0
BuildRequires: freetype-devel >= 2.1.9 BuildRequires: freetype-devel >= 2.1.9
BuildRequires: fontconfig-devel >= 2.2.95 BuildRequires: fontconfig-devel >= 2.2.95
Provides: cairo-gobject
Obsoletes: cairo-gobject
%description %description
Cairo is a 2D graphics libarary with support for multiple output devices. Cairo is a 2D graphics libarary with support for multiple output devices.
@ -34,8 +29,6 @@ GObject used by GNOME.
%package devel %package devel
Summary: Development files for cairo Summary: Development files for cairo
Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}%{?_isa} = %{version}-%{release}
Provides: cairo-gobject-devel cairo-tools
Obsoletes: cairo-gobject-devel cairo-tools
%description devel %description devel
This package contains libraries, header files and developer documentation This package contains libraries, header files and developer documentation
@ -43,6 +36,39 @@ needed for developing software which uses the cairo graphics library and
cairo GObject library and contains tools for working with the cairo graphics cairo GObject library and contains tools for working with the cairo graphics
library as well. library as well.
%package gobject
Summary: GObject bindings for cairo
Requires: %{name}%{?_isa} = %{version}-%{release}
%description gobject
Cairo is a 2D graphics library designed to provide high-quality display
and print output.
This package contains functionality to make cairo graphics library
integrate well with the GObject object system used by GNOME.
%package gobject-devel
Summary: Development files for cairo-gobject
Requires: %{name}-devel%{?_isa} = %{version}-%{release}
Requires: %{name}-gobject%{?_isa} = %{version}-%{release}
%description gobject-devel
Cairo is a 2D graphics library designed to provide high-quality display
and print output.
This package contains libraries, header files and developer documentation
needed for developing software which uses the cairo Gobject library.
%package tools
Summary: Development tools for cairo
%description tools
Cairo is a 2D graphics library designed to provide high-quality display
and print output.
This package contains tools for working with the cairo graphics library.
* cairo-trace: Record cairo library calls for later playback
%prep %prep
%autosetup -p1 %autosetup -p1
@ -61,30 +87,59 @@ find $RPM_BUILD_ROOT -name '*.la' -delete
%files %files
%license COPYING COPYING-LGPL-2.1 COPYING-MPL-1.1 %license COPYING COPYING-LGPL-2.1 COPYING-MPL-1.1
%doc AUTHORS BIBLIOGRAPHY BUGS NEWS README %doc AUTHORS BIBLIOGRAPHY BUGS NEWS README
%{_libdir}/libcairo.so.* %{_libdir}/libcairo.so.2*
%{_libdir}/libcairo-script-interpreter.so.* %{_libdir}/libcairo-script-interpreter.so.2*
%{_bindir}/cairo-sphinx
# This is GObject relative lib file %files devel
%{_libdir}/libcairo-gobject.so.*
%files devel
%doc ChangeLog PORTING_GUIDE %doc ChangeLog PORTING_GUIDE
%dir %{_includedir}/cairo/ %dir %{_includedir}/cairo/
%exclude %{_includedir}/cairo/cairo-gl.h %{_includedir}/cairo/cairo-deprecated.h
%{_includedir}/cairo/*.h %{_includedir}/cairo/cairo-features.h
%{_libdir}/*.so %{_includedir}/cairo/cairo-ft.h
%exclude %{_libdir}/pkgconfig/cairo-glx.pc %{_includedir}/cairo/cairo.h
%exclude %{_libdir}/pkgconfig/cairo-gl.pc %{_includedir}/cairo/cairo-pdf.h
%exclude %{_libdir}/pkgconfig/cairo-egl.pc %{_includedir}/cairo/cairo-ps.h
%{_libdir}/pkgconfig/*.pc %{_includedir}/cairo/cairo-script-interpreter.h
# These two files are development tools related %{_includedir}/cairo/cairo-svg.h
%{_libdir}/cairo/ %{_includedir}/cairo/cairo-tee.h
%{_includedir}/cairo/cairo-version.h
%{_includedir}/cairo/cairo-xlib-xrender.h
%{_includedir}/cairo/cairo-xlib.h
%{_includedir}/cairo/cairo-script.h
%{_includedir}/cairo/cairo-xcb.h
%{_libdir}/libcairo.so
%{_libdir}/libcairo-script-interpreter.so
%{_libdir}/pkgconfig/cairo-fc.pc
%{_libdir}/pkgconfig/cairo-ft.pc
%{_libdir}/pkgconfig/cairo.pc
%{_libdir}/pkgconfig/cairo-pdf.pc
%{_libdir}/pkgconfig/cairo-png.pc
%{_libdir}/pkgconfig/cairo-ps.pc
%{_libdir}/pkgconfig/cairo-svg.pc
%{_libdir}/pkgconfig/cairo-tee.pc
%{_libdir}/pkgconfig/cairo-xlib.pc
%{_libdir}/pkgconfig/cairo-xlib-xrender.pc
%{_libdir}/pkgconfig/cairo-script.pc
%{_libdir}/pkgconfig/cairo-xcb-shm.pc
%{_libdir}/pkgconfig/cairo-xcb.pc
%{_datadir}/gtk-doc/html/cairo %{_datadir}/gtk-doc/html/cairo
# This file is development tools related
# cairo-trace: Record cairo library calls for later playback %files gobject
%{_libdir}/libcairo-gobject.so.2*
%files gobject-devel
%{_includedir}/cairo/cairo-gobject.h
%{_libdir}/libcairo-gobject.so
%{_libdir}/pkgconfig/cairo-gobject.pc
%files tools
%{_bindir}/cairo-trace %{_bindir}/cairo-trace
%{_libdir}/cairo/
%changelog %changelog
* Mon Nov 22 2021 hanhui<hanhui15@huawei.com> - 1.17.4-1
- DESC:update to 1.17.4
* Wed May 26 2021 liuyumeng <liuyumeng5@huawei.com> - 1.16.0-5 * Wed May 26 2021 liuyumeng <liuyumeng5@huawei.com> - 1.16.0-5
- Add a BuildRequires for gcc - Add a BuildRequires for gcc