diff --git a/0002-ft-Use-FT_Done_MM_Var-instead-of-free-when-available.patch b/0002-ft-Use-FT_Done_MM_Var-instead-of-free-when-available.patch deleted file mode 100644 index 3709c5a90f8093b53b3e89df0e950bcb6a1f355a..0000000000000000000000000000000000000000 --- a/0002-ft-Use-FT_Done_MM_Var-instead-of-free-when-available.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 90e85c2493fdfa3551f202ff10282463f1e36645 Mon Sep 17 00:00:00 2001 -From: Carlos Garcia Campos -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 - diff --git a/0003-cairo-composite_color_glyphs.patch b/0003-cairo-composite_color_glyphs.patch deleted file mode 100644 index fe8860e784314170a1a34db0ec19bc7cbfb72e2c..0000000000000000000000000000000000000000 --- a/0003-cairo-composite_color_glyphs.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 79ad01724161502e8d9d2bd384ff1f0174e5df6e Mon Sep 17 00:00:00 2001 -From: Matthias Clasen -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); - } - diff --git a/0004-cff-Allow-empty-array-of-operands-for-certain-operat.patch b/0004-cff-Allow-empty-array-of-operands-for-certain-operat.patch deleted file mode 100644 index ac9784b409089ccd10be07d375f114a321131a3b..0000000000000000000000000000000000000000 --- a/0004-cff-Allow-empty-array-of-operands-for-certain-operat.patch +++ /dev/null @@ -1,116 +0,0 @@ -From ef959bc76e65ea0b0d4ba3ee50dfbce31c3484ad Mon Sep 17 00:00:00 2001 -From: Marek Kasik -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 - diff --git a/cairo-1.16.0.tar.xz b/cairo-1.17.4.tar.xz similarity index 81% rename from cairo-1.16.0.tar.xz rename to cairo-1.17.4.tar.xz index 5617883b5092fdd5eaa1db2ff57039c4246e5e59..10ab9807294bb615e0e4d821660b907cb2a586d2 100644 Binary files a/cairo-1.16.0.tar.xz and b/cairo-1.17.4.tar.xz differ diff --git a/cairo.spec b/cairo.spec index f866bba5e4b28bffd0d5751e3c347dc153109b05..6e2aaff4f6e59d3d14a82d92a0dc5f968b03e180 100644 --- a/cairo.spec +++ b/cairo.spec @@ -1,29 +1,24 @@ %global cairogl --disable-gl Name: cairo -Version: 1.16.0 -Release: 5 +Version: 1.17.4 +Release: 1 Summary: A 2D graphics library License: LGPLv2 or MPLv1.1 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 -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 Patch6001: CVE-2019-6462.patch Patch6002: backport-CVE-2020-35492.patch -BuildRequires: gcc +BuildRequires: gcc make BuildRequires: pkgconfig glib2-devel librsvg2-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: fontconfig-devel >= 2.2.95 -Provides: cairo-gobject -Obsoletes: cairo-gobject %description Cairo is a 2D graphics libarary with support for multiple output devices. @@ -34,8 +29,6 @@ GObject used by GNOME. %package devel Summary: Development files for cairo Requires: %{name}%{?_isa} = %{version}-%{release} -Provides: cairo-gobject-devel cairo-tools -Obsoletes: cairo-gobject-devel cairo-tools %description devel 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 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 %autosetup -p1 @@ -61,30 +87,59 @@ find $RPM_BUILD_ROOT -name '*.la' -delete %files %license COPYING COPYING-LGPL-2.1 COPYING-MPL-1.1 %doc AUTHORS BIBLIOGRAPHY BUGS NEWS README -%{_libdir}/libcairo.so.* -%{_libdir}/libcairo-script-interpreter.so.* -%{_bindir}/cairo-sphinx -# This is GObject relative lib file -%{_libdir}/libcairo-gobject.so.* - -%files devel +%{_libdir}/libcairo.so.2* +%{_libdir}/libcairo-script-interpreter.so.2* + +%files devel %doc ChangeLog PORTING_GUIDE %dir %{_includedir}/cairo/ -%exclude %{_includedir}/cairo/cairo-gl.h -%{_includedir}/cairo/*.h -%{_libdir}/*.so -%exclude %{_libdir}/pkgconfig/cairo-glx.pc -%exclude %{_libdir}/pkgconfig/cairo-gl.pc -%exclude %{_libdir}/pkgconfig/cairo-egl.pc -%{_libdir}/pkgconfig/*.pc -# These two files are development tools related -%{_libdir}/cairo/ +%{_includedir}/cairo/cairo-deprecated.h +%{_includedir}/cairo/cairo-features.h +%{_includedir}/cairo/cairo-ft.h +%{_includedir}/cairo/cairo.h +%{_includedir}/cairo/cairo-pdf.h +%{_includedir}/cairo/cairo-ps.h +%{_includedir}/cairo/cairo-script-interpreter.h +%{_includedir}/cairo/cairo-svg.h +%{_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 -# 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 +%{_libdir}/cairo/ %changelog +* Mon Nov 22 2021 hanhui - 1.17.4-1 +- DESC:update to 1.17.4 + * Wed May 26 2021 liuyumeng - 1.16.0-5 - Add a BuildRequires for gcc