Compare commits

...

No commits in common. 'c9' and 'i10c-beta' have entirely different histories.

@ -1 +1 @@
68712ae1039b114347be3b7200bc1c901d47a636 SOURCES/cairo-1.17.4.tar.xz
fae6760ed0772681ddc60c603c9bb525ac74f000 SOURCES/cairo-1.18.0.tar.xz

2
.gitignore vendored

@ -1 +1 @@
SOURCES/cairo-1.17.4.tar.xz
SOURCES/cairo-1.18.0.tar.xz

@ -1,56 +0,0 @@
From 12a5b7384f35d9a3f4c6b151fac4857444db3d6a Mon Sep 17 00:00:00 2001
From: Nikolaus Waxweiler <madigens@gmail.com>
Date: Sat, 10 Nov 2018 16:44:23 +0000
Subject: [PATCH] Set default LCD filter to FreeType's default
---
src/cairo-ft-font.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c
index 325dd61b4..3c47dc12e 100644
--- a/src/cairo-ft-font.c
+++ b/src/cairo-ft-font.c
@@ -1404,7 +1404,7 @@ _render_glyph_outline (FT_Face face,
cairo_image_surface_t **surface)
{
int rgba = FC_RGBA_UNKNOWN;
- int lcd_filter = FT_LCD_FILTER_LEGACY;
+ int lcd_filter = FT_LCD_FILTER_DEFAULT;
FT_GlyphSlot glyphslot = face->glyph;
FT_Outline *outline = &glyphslot->outline;
FT_Bitmap bitmap;
@@ -1439,13 +1439,13 @@ _render_glyph_outline (FT_Face face,
case CAIRO_LCD_FILTER_NONE:
lcd_filter = FT_LCD_FILTER_NONE;
break;
- case CAIRO_LCD_FILTER_DEFAULT:
case CAIRO_LCD_FILTER_INTRA_PIXEL:
lcd_filter = FT_LCD_FILTER_LEGACY;
break;
case CAIRO_LCD_FILTER_FIR3:
lcd_filter = FT_LCD_FILTER_LIGHT;
break;
+ case CAIRO_LCD_FILTER_DEFAULT:
case CAIRO_LCD_FILTER_FIR5:
lcd_filter = FT_LCD_FILTER_DEFAULT;
break;
@@ -3416,7 +3416,6 @@ _cairo_ft_font_options_substitute (const cairo_font_options_t *options,
case CAIRO_LCD_FILTER_NONE:
lcd_filter = FT_LCD_FILTER_NONE;
break;
- case CAIRO_LCD_FILTER_DEFAULT:
case CAIRO_LCD_FILTER_INTRA_PIXEL:
lcd_filter = FT_LCD_FILTER_LEGACY;
break;
@@ -3424,6 +3423,7 @@ _cairo_ft_font_options_substitute (const cairo_font_options_t *options,
lcd_filter = FT_LCD_FILTER_LIGHT;
break;
default:
+ case CAIRO_LCD_FILTER_DEFAULT:
case CAIRO_LCD_FILTER_FIR5:
lcd_filter = FT_LCD_FILTER_DEFAULT;
break;
--
2.19.1

@ -1,58 +0,0 @@
From a3b69a0215fdface0fd5730872a4b3242d979dca Mon Sep 17 00:00:00 2001
From: Uli Schlachter <psychon@znc.in>
Date: Tue, 9 Feb 2021 16:54:35 +0100
Subject: [PATCH] pdf font subset: Generate valid font names
A hash value is encoded in base 26 with upper case letters for font
names.
Commit ed984146 replaced "numerator = abs (hash);" with "numerator =
hash;" in this code, because hash has type uint32_t and the compiler
warned about taking the absolute value of an unsigned value. However,
abs() is actually defined to take an int argument. Thus, there was some
implicit cast.
Since numerator has type long, i.e. is signed, it is now actually
possible to get an overflow in the implicit cast and then have a
negative number. The following code is not prepared for this and
produces non-letters when encoding the hash.
This commit fixes that problem by not using ldiv() and instead using /
and % to directly compute the needed values. This gets rid of the need
to convert to type long. Since now everything works with uint32_t, there
is no more chance for negative numbers messing things up.
Fixes: https://gitlab.freedesktop.org/cairo/cairo/-/issues/449
Signed-off-by: Uli Schlachter <psychon@znc.in>
---
src/cairo-pdf-surface.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c
index 6da460878..52c49b6d2 100644
--- a/src/cairo-pdf-surface.c
+++ b/src/cairo-pdf-surface.c
@@ -5310,18 +5310,14 @@ _create_font_subset_tag (cairo_scaled_font_subset_t *font_subset,
{
uint32_t hash;
int i;
- long numerator;
- ldiv_t d;
hash = _hash_data ((unsigned char *) font_name, strlen(font_name), 0);
hash = _hash_data ((unsigned char *) (font_subset->glyphs),
font_subset->num_glyphs * sizeof(unsigned long), hash);
- numerator = hash;
for (i = 0; i < 6; i++) {
- d = ldiv (numerator, 26);
- numerator = d.quot;
- tag[i] = 'A' + d.rem;
+ tag[i] = 'A' + (hash % 26);
+ hash /= 26;
}
tag[i] = 0;
}
--
GitLab

@ -1,199 +0,0 @@
From 40e9d1a0a69f01b55b4fa131bc253c7c09a0ae91 Mon Sep 17 00:00:00 2001
From: Heiko Lewin <heiko.lewin@worldiety.de>
Date: Tue, 15 Dec 2020 16:48:19 +0100
Subject: [PATCH 1/2] Fix mask usage in image-compositor
---
src/cairo-image-compositor.c | 8 ++--
test/Makefile.sources | 1 +
test/bug-image-compositor.c | 39 ++++++++++++++++++++
test/reference/bug-image-compositor.ref.png | Bin 0 -> 185 bytes
4 files changed, 44 insertions(+), 4 deletions(-)
create mode 100644 test/bug-image-compositor.c
create mode 100644 test/reference/bug-image-compositor.ref.png
diff --git a/src/cairo-image-compositor.c b/src/cairo-image-compositor.c
index 122a8ca42..b20e2ec78 100644
--- a/src/cairo-image-compositor.c
+++ b/src/cairo-image-compositor.c
@@ -2601,14 +2601,14 @@ _inplace_src_spans (void *abstract_renderer, int y, int h,
unsigned num_spans)
{
cairo_image_span_renderer_t *r = abstract_renderer;
- uint8_t *m;
+ uint8_t *m, *base = (uint8_t*)pixman_image_get_data(r->mask);
int x0;
if (num_spans == 0)
return CAIRO_STATUS_SUCCESS;
x0 = spans[0].x;
- m = r->_buf;
+ m = base;
do {
int len = spans[1].x - spans[0].x;
if (len >= r->u.composite.run_length && spans[0].coverage == 0xff) {
@@ -2646,7 +2646,7 @@ _inplace_src_spans (void *abstract_renderer, int y, int h,
spans[0].x, y,
spans[1].x - spans[0].x, h);
- m = r->_buf;
+ m = base;
x0 = spans[1].x;
} else if (spans[0].coverage == 0x0) {
if (spans[0].x != x0) {
@@ -2675,7 +2675,7 @@ _inplace_src_spans (void *abstract_renderer, int y, int h,
#endif
}
- m = r->_buf;
+ m = base;
x0 = spans[1].x;
} else {
*m++ = spans[0].coverage;
diff --git a/test/Makefile.sources b/test/Makefile.sources
index c47131faf..86fd53d15 100644
--- a/test/Makefile.sources
+++ b/test/Makefile.sources
@@ -33,6 +33,7 @@ test_sources = \
bug-source-cu.c \
bug-extents.c \
bug-seams.c \
+ bug-image-compositor.c \
caps.c \
checkerboard.c \
caps-joins.c \
diff --git a/test/bug-image-compositor.c b/test/bug-image-compositor.c
new file mode 100644
index 000000000..fc4fd370b
--- /dev/null
+++ b/test/bug-image-compositor.c
@@ -0,0 +1,39 @@
+#include "cairo-test.h"
+
+static cairo_test_status_t
+draw (cairo_t *cr, int width, int height)
+{
+ cairo_set_source_rgb (cr, 0., 0., 0.);
+ cairo_paint (cr);
+
+ cairo_set_source_rgb (cr, 1., 1., 1.);
+ cairo_set_line_width (cr, 1.);
+
+ cairo_pattern_t *p = cairo_pattern_create_linear (0, 0, width, height);
+ cairo_pattern_add_color_stop_rgb (p, 0, 0.99, 1, 1);
+ cairo_pattern_add_color_stop_rgb (p, 1, 1, 1, 1);
+ cairo_set_source (cr, p);
+
+ cairo_move_to (cr, 0.5, -1);
+ for (int i = 0; i < width; i+=3) {
+ cairo_rel_line_to (cr, 2, 2);
+ cairo_rel_line_to (cr, 1, -2);
+ }
+
+ cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
+ cairo_stroke (cr);
+
+ cairo_pattern_destroy(p);
+
+ return CAIRO_TEST_SUCCESS;
+}
+
+
+CAIRO_TEST (bug_image_compositor,
+ "Crash in image-compositor",
+ "stroke, stress", /* keywords */
+ NULL, /* requirements */
+ 10000, 1,
+ NULL, draw)
+
+
diff --git a/test/reference/bug-image-compositor.ref.png b/test/reference/bug-image-compositor.ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..939f659d2c8620e9927a3a79f5e96fb639c418be
GIT binary patch
literal 185
zcmeAS@N?(olHy`uVBq!ia0y~yP!|BQ89A7M<o7+wF+hqf$=lt9;Xep2*t>i(P$bXO
z#WAE}&f8-f1se=_SPWL_NSx=C)BnJ0eBr6Z%1egFEOv(*t#+|{>X&v^RS7GQe(vez
lf)$wgmAfM(p2Sx&&i!{gWy)N&qd=P(JYD@<);T3K0RWsgHuC@g
literal 0
HcmV?d00001
--
2.34.1
From afc23bfdc3c2597b9fe0ee34b9b4bfa47fa03698 Mon Sep 17 00:00:00 2001
From: Heiko Lewin <heiko.lewin@worldiety.de>
Date: Tue, 15 Dec 2020 17:14:18 +0100
Subject: [PATCH 2/2] Minor cleanups
---
test/bug-image-compositor.c | 33 ++++++++++++++++++++++++++++++---
1 file changed, 30 insertions(+), 3 deletions(-)
diff --git a/test/bug-image-compositor.c b/test/bug-image-compositor.c
index fc4fd370b..304ea089c 100644
--- a/test/bug-image-compositor.c
+++ b/test/bug-image-compositor.c
@@ -1,5 +1,34 @@
+/*
+ * Copyright © 2020 Uli Schlachter, Heiko Lewin
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author: Uli Schlachter <psychon@znc.in>
+ * Author: Heiko Lewin <hlewin@gmx.de>
+ */
#include "cairo-test.h"
+
+/* This test reproduces an overflow of a mask-buffer in cairo-image-compositor.c */
+
static cairo_test_status_t
draw (cairo_t *cr, int width, int height)
{
@@ -13,6 +42,7 @@ draw (cairo_t *cr, int width, int height)
cairo_pattern_add_color_stop_rgb (p, 0, 0.99, 1, 1);
cairo_pattern_add_color_stop_rgb (p, 1, 1, 1, 1);
cairo_set_source (cr, p);
+ cairo_pattern_destroy(p);
cairo_move_to (cr, 0.5, -1);
for (int i = 0; i < width; i+=3) {
@@ -23,8 +53,6 @@ draw (cairo_t *cr, int width, int height)
cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
cairo_stroke (cr);
- cairo_pattern_destroy(p);
-
return CAIRO_TEST_SUCCESS;
}
@@ -36,4 +64,3 @@ CAIRO_TEST (bug_image_compositor,
10000, 1,
NULL, draw)
-
--
2.34.1

@ -1,54 +1,32 @@
%define pixman_version 0.30.0
%define freetype_version 2.1.9
%define pixman_version 0.36.0
%define freetype_version 9.7.3
%define fontconfig_version 2.2.95
%if 0%{?fedora} > 26 || 0%{?rhel} > 7
%global cairogl --disable-gl
%else
%global cairogl --enable-gl
%global with_gl 1
%endif
Name: cairo
Version: 1.18.0
Release: 4%{?dist}
Summary: A 2D graphics library
Name: cairo
Version: 1.17.4
Release: 7%{?dist}
Summary: A 2D graphics library
License: LGPL-2.1-only OR MPL-1.1
URL: https://cairographics.org
Source: https://cairographics.org/releases/%{name}-%{version}.tar.xz
License: LGPLv2 or MPLv1.1
URL: http://cairographics.org
Source0: http://cairographics.org/snapshots/%{name}-%{version}.tar.xz
Patch3: cairo-multilib.patch
# https://gitlab.freedesktop.org/cairo/cairo/merge_requests/1
Patch4: 0001-Set-default-LCD-filter-to-FreeType-s-default.patch
# Fix generating PDF font names
# https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/125
Patch5: 125.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1911486
Patch6: cairo-1.15.12-CVE-2020-35492.patch
# For Patch6.
BuildRequires: autoconf automake gettext-devel libtool
Patch: cairo-multilib.patch
BuildRequires: gcc
BuildRequires: pkgconfig
BuildRequires: libXrender-devel
BuildRequires: libX11-devel
BuildRequires: libpng-devel
BuildRequires: libxml2-devel
BuildRequires: pixman-devel >= %{pixman_version}
BuildRequires: freetype-devel >= %{freetype_version}
BuildRequires: fontconfig-devel >= %{fontconfig_version}
BuildRequires: glib2-devel
BuildRequires: librsvg2-devel
%if 0%{?with_gl}
BuildRequires: mesa-libGL-devel
BuildRequires: mesa-libEGL-devel
%endif
BuildRequires: make
BuildRequires: git-core
BuildRequires: gcc-c++
BuildRequires: gtk-doc
BuildRequires: meson
BuildRequires: pkgconfig(expat)
BuildRequires: pkgconfig(pixman-1) >= %{pixman_version}
BuildRequires: pkgconfig(freetype2) >= %{freetype_version}
BuildRequires: pkgconfig(fontconfig) >= %{fontconfig_version}
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(librsvg-2.0)
BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(xcb-render)
BuildRequires: pkgconfig(xrender)
%description
Cairo is a 2D graphics library designed to provide high-quality display
@ -94,6 +72,7 @@ needed for developing software which uses the cairo Gobject library.
%package tools
Summary: Development tools for cairo
Requires: %{name}%{?_isa} = %{version}-%{release}
%description tools
Cairo is a 2D graphics library designed to provide high-quality display
@ -103,36 +82,33 @@ This package contains tools for working with the cairo graphics library.
* cairo-trace: Record cairo library calls for later playback
%prep
%autosetup -S git
%autosetup -p1
%build
autoreconf --force --install
%configure --disable-static \
--enable-xlib \
--enable-ft \
--enable-ps \
--enable-pdf \
--enable-svg \
--enable-tee \
--enable-gobject \
%{cairogl} \
--disable-gtk-doc
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
make V=1 %{?_smp_mflags}
%meson \
-Dfreetype=enabled \
-Dfontconfig=enabled \
-Dglib=enabled \
-Dgtk_doc=true \
-Dspectre=disabled \
-Dsymbol-lookup=disabled \
-Dtee=enabled \
-Dtests=disabled \
-Dxcb=enabled \
-Dxlib=enabled \
%{nil}
%meson_build
%install
%make_install
find $RPM_BUILD_ROOT -name '*.la' -delete
%meson_install
%files
%license COPYING COPYING-LGPL-2.1 COPYING-MPL-1.1
%doc AUTHORS BIBLIOGRAPHY BUGS NEWS README
%doc AUTHORS BUGS NEWS README.md
%{_libdir}/libcairo.so.2*
%{_libdir}/libcairo-script-interpreter.so.2*
%files devel
%doc ChangeLog PORTING_GUIDE
%dir %{_includedir}/cairo/
%{_includedir}/cairo/cairo-deprecated.h
%{_includedir}/cairo/cairo-features.h
@ -156,6 +132,7 @@ find $RPM_BUILD_ROOT -name '*.la' -delete
%{_libdir}/pkgconfig/cairo-pdf.pc
%{_libdir}/pkgconfig/cairo-png.pc
%{_libdir}/pkgconfig/cairo-ps.pc
%{_libdir}/pkgconfig/cairo-script-interpreter.pc
%{_libdir}/pkgconfig/cairo-svg.pc
%{_libdir}/pkgconfig/cairo-tee.pc
%{_libdir}/pkgconfig/cairo-xlib.pc
@ -164,12 +141,6 @@ find $RPM_BUILD_ROOT -name '*.la' -delete
%{_libdir}/pkgconfig/cairo-xcb-shm.pc
%{_libdir}/pkgconfig/cairo-xcb.pc
%{_datadir}/gtk-doc/html/cairo
%if 0%{?with_gl}
%{_includedir}/cairo/cairo-gl.h
%{_libdir}/pkgconfig/cairo-egl.pc
%{_libdir}/pkgconfig/cairo-gl.pc
%{_libdir}/pkgconfig/cairo-glx.pc
%endif
%files gobject
%{_libdir}/libcairo-gobject.so.2*
@ -184,18 +155,59 @@ find $RPM_BUILD_ROOT -name '*.la' -delete
%{_libdir}/cairo/
%changelog
* Mon Feb 21 2022 Tomas Popela <tpopela@redhat.com> - 1.17.4-7
- Add git as BR (#1911486)
* Tue Nov 26 2024 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 1.18.0-4
- Rebuilt for MSVSphere 10
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 1.18.0-4
- Bump release for June 2024 mass rebuild
* Tue Jan 23 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.18.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.18.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Sep 27 2023 Kalev Lember <klember@redhat.com> - 1.18.0-1
- Update to 1.18.0
- Drop the xml surface and cairo-sphinx tool as they've been removed upstream
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.17.8-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Mon May 15 2023 Scott Talbert <swt@techie.net> - 1.17.8-4
- Fix crash due to scaled_glyph->dev_private reuse (#2189228)
* Wed Mar 15 2023 David King <amigadave@amigadave.com> - 1.17.8-3
- Fix missing glyphs in ft-font
* Sat Feb 25 2023 Marek Kasik <mkasik@redhat.com> - 1.17.8-2
- Rebuild for new freetype-2.13.0
* Mon Feb 20 2023 David King <amigadave@amigadave.com> - 1.17.8-1
- Update to 1.17.8 (#2166624)
* Wed Jan 18 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.17.6-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.17.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Fri Mar 18 2022 David King <amigadave@amigadave.com> - 1.17.6-1
- Update to 1.17.6
* Fri Feb 25 2022 David King <amigadave@amigadave.com> - 1.17.4-7
- Fix permissions on cairo-trace
- Add explicit Requires to tools subpackage
* Mon Feb 21 2022 David King <amigadave@amigadave.com> - 1.17.4-6
- Fix CVE-2020-35492 (#1911486)
* Tue Feb 15 2022 David King <amigadave@amigadave.com> - 1.17.4-6
- Switch to meson
- Use pkgconfig for BuildRequires
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 1.17.4-5
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.17.4-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 1.17.4-4
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.17.4-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Mar 16 2021 Kalev Lember <klember@redhat.com> - 1.17.4-3
- Backport an upstream patch to fix generating PDF font names (#1939399)

Loading…
Cancel
Save