Compare commits

..

1 commit

Author SHA1 Message Date
Remi Collet
2487b15eb4 Update to 2.2.5
fix double-free in gdImagePngPtr(). CVE-2017-6362
fix buffer over-read into uninitialized memory. CVE-2017-7890

(cherry picked from commit 49b4f7faf0)
2017-08-30 16:44:18 +02:00
7 changed files with 56 additions and 353 deletions

4
.gitignore vendored
View file

@ -9,7 +9,3 @@ gd-2.0.35.tar.bz2
/libgd-2.2.3.tar.xz
/libgd-2.2.4.tar.xz
/libgd-2.2.5.tar.xz
/libgd-2.3.0.tar.xz
/libgd-2.3.1.tar.xz
/libgd-2.3.2.tar.xz
/libgd-2.3.3.tar.xz

33
gd-2.1.0-multilib.patch Normal file
View file

@ -0,0 +1,33 @@
diff -up gd-2.1.0/config/gdlib-config.in.multilib gd-2.1.0/config/gdlib-config.in
--- gd-2.1.0/config/gdlib-config.in.multilib 2013-04-21 16:58:17.820010758 +0200
+++ gd-2.1.0/config/gdlib-config.in 2013-04-21 16:59:27.896317922 +0200
@@ -7,9 +7,10 @@
# installation directories
prefix=@prefix@
exec_prefix=@exec_prefix@
-libdir=@libdir@
+libdir=`pkg-config gdlib --variable=libdir`
includedir=@includedir@
bindir=@bindir@
+ldflags=`pkg-config gdlib --variable=ldflags`
usage()
{
@@ -68,7 +69,7 @@ while test $# -gt 0; do
echo @GDLIB_REVISION@
;;
--ldflags)
- echo @LDFLAGS@
+ echo $ldflags
;;
--libs)
echo -lgd @LIBS@ @LIBICONV@
@@ -83,7 +84,7 @@ while test $# -gt 0; do
echo "GD library @VERSION@"
echo "includedir: $includedir"
echo "cflags: -I@includedir@"
- echo "ldflags: @LDFLAGS@"
+ echo "ldflags: $ldflags"
echo "libs: @LIBS@ @LIBICONV@"
echo "libdir: $libdir"
echo "features: @FEATURES@"

243
gd.spec
View file

@ -1,25 +1,9 @@
%if 0%{?rhel}
%bcond_with liq
%bcond_with raqm
%bcond_with avif
%else
# Enabled by default
%bcond_without liq
%bcond_without avif
%endif
# disabled as breaks vertical text
# See https://bugzilla.redhat.com/2022957
%bcond_with raqm
# Not available in Fedora, only in rpmfusion
# Also see https://github.com/libgd/libgd/issues/678 segfault
%bcond_with heif
Summary: A graphics library for quick creation of PNG or JPEG images
Name: gd
Version: 2.3.3
Release: 20%{?prever}%{?short}%{?dist}
License: GD
Version: 2.2.5
Release: 1%{?prever}%{?short}%{?dist}
Group: System Environment/Libraries
License: MIT
URL: http://libgd.github.io/
%if 0%{?commit:1}
# git clone https://github.com/libgd/libgd.git; cd gd-libgd
@ -29,10 +13,7 @@ Source0: libgd-%{version}-%{commit}.tgz
Source0: https://github.com/libgd/libgd/releases/download/gd-%{version}/libgd-%{version}.tar.xz
%endif
# Needed by PHP see https://github.com/libgd/libgd/pull/766
Patch0: libgd-flip.patch
# Missing header see https://github.com/libgd/libgd/pull/766
Patch1: libgd-iostream.patch
Patch1: gd-2.1.0-multilib.patch
BuildRequires: freetype-devel
BuildRequires: fontconfig-devel
@ -41,29 +22,15 @@ BuildRequires: libjpeg-devel
BuildRequires: libpng-devel
BuildRequires: libtiff-devel
BuildRequires: libwebp-devel
%if %{with liq}
BuildRequires: libimagequant-devel
%endif
%if %{with raqm}
BuildRequires: libraqm-devel
%endif
%if %{with avif}
BuildRequires: libavif-devel
%endif
%if %{with heif}
BuildRequires: libheif-devel
%endif
BuildRequires: libX11-devel
BuildRequires: libXpm-devel
BuildRequires: zlib-devel
BuildRequires: pkgconfig
BuildRequires: libtool
BuildRequires: perl-interpreter
BuildRequires: perl
BuildRequires: perl-generators
BuildRequires: perl(FindBin)
# for fontconfig/basic test
BuildRequires: liberation-sans-fonts
BuildRequires: make
%description
@ -78,6 +45,7 @@ browsers. Note that gd is not a paint program.
%package progs
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: Utility programs that use libgd
Group: Applications/Multimedia
%description progs
The gd-progs package includes utility programs supplied with gd, a
@ -86,6 +54,7 @@ graphics library for creating PNG and JPEG images.
%package devel
Summary: The development libraries and header files for gd
Group: Development/Libraries
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: freetype-devel%{?_isa}
Requires: fontconfig-devel%{?_isa}
@ -96,19 +65,6 @@ Requires: libwebp-devel%{?_isa}
Requires: libX11-devel%{?_isa}
Requires: libXpm-devel%{?_isa}
Requires: zlib-devel%{?_isa}
%if %{with liq}
Requires: libimagequant-devel%{?_isa}
%endif
%if %{with raqm}
Requires: libraqm-devel
%endif
%if %{with avif}
Requires: libavif-devel
%endif
%if %{with heif}
Requires: libheif-devel
%endif
%description devel
The gd-devel package contains the development libraries and header
@ -117,8 +73,7 @@ files for gd, a graphics library for creating PNG and JPEG graphics.
%prep
%setup -q -n libgd-%{version}%{?prever:-%{prever}}
%patch -P0 -p1
%patch -P1 -p1
%patch1 -p1 -b .mlib
: $(perl config/getver.pl)
@ -133,7 +88,7 @@ fi
%build
# Provide a correct default font search path
CFLAGS="-std=gnu17 $RPM_OPT_FLAGS -DDEFAULT_FONTPATH='\"\
CFLAGS="$RPM_OPT_FLAGS -DDEFAULT_FONTPATH='\"\
/usr/share/fonts/bitstream-vera:\
/usr/share/fonts/dejavu:\
/usr/share/fonts/default/Type1:\
@ -145,13 +100,12 @@ CFLAGS="-std=gnu17 $RPM_OPT_FLAGS -DDEFAULT_FONTPATH='\"\
CFLAGS="$CFLAGS -msse -mfpmath=sse"
%endif
%ifarch aarch64 ppc64 ppc64le s390 s390x x86_64 riscv64
%ifarch aarch64 ppc64 ppc64le s390 s390x
# workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1359680
export CFLAGS="$CFLAGS -ffp-contract=off"
%endif
%configure \
--enable-gd-formats \
--with-tiff=%{_prefix} \
--disable-rpath
make %{?_smp_mflags}
@ -164,8 +118,12 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/libgd.a
%check
# Workaround to https://github.com/libgd/libgd/issues/763
export TMPDIR=/tmp
%ifarch %{ix86}
# See https://github.com/libgd/libgd/issues/359
XFAIL_TESTS="gdimagegrayscale/basic $XFAIL_TESTS"
%endif
export XFAIL_TESTS
: Upstream test suite
make check
@ -174,7 +132,9 @@ make check
grep %{version} $RPM_BUILD_ROOT%{_libdir}/pkgconfig/gdlib.pc
%ldconfig_scriptlets
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
@ -184,180 +144,21 @@ grep %{version} $RPM_BUILD_ROOT%{_libdir}/pkgconfig/gdlib.pc
%files progs
%{_bindir}/*
%exclude %{_bindir}/gdlib-config
%files devel
%{_bindir}/gdlib-config
%{_includedir}/*
%{_libdir}/*.so
%{_libdir}/pkgconfig/gdlib.pc
%changelog
* Tue Sep 09 2025 Sandro Mani <manisandro@gmail.com> - 2.3.3-20
- Rebuild (libimagequant)
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.3-19
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.3-18
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.3-17
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Wed Mar 06 2024 Richard W.M. Jones <rjones@redhat.com> - 2.3.3-16
- Bump and rebuild package (for riscv64)
* Wed Jan 31 2024 František Zatloukal <fzatlouk@redhat.com> - 2.3.3-15
- Rebuilt for libavif 1.0.3
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.3-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.3-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.3-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Sat Mar 04 2023 Sandro Mani <manisandro@gmail.com> - 2.3.3-11
- Rebuild (libimagequant)
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.3-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Thu Dec 01 2022 Kalev Lember <klember@redhat.com> - 2.3.3-9
- Rebuild for new libavif
* Sun Oct 23 2022 Robert-André Mauchin <zebob.m@gmail.com> - 2.3.3-8
- Rebuild for new libavif
* Sun Oct 23 2022 Robert-André Mauchin <zebob.m@gmail.com> - 2.3.3-7
- Rebuild for new libavif
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.3-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.3-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Mon Nov 29 2021 Robert-André Mauchin <zebob.m@gmail.com> - 2.3.3-4
- Rebuild for libavif soname bump
* Fri Nov 19 2021 Remi Collet <remi@remirepo.net> - 2.3.3-3
- disable libraqm usage, see #2022957
* Mon Sep 20 2021 Paul Howarth <paul@city-fan.org> - 2.3.3-2
- Explicitly enable gd/gd2 formats, wanted by perl bindings (#2005916)
* Mon Sep 13 2021 Remi Collet <remi@remirepo.net> - 2.3.3-1
- update to 2.3.3
- open https://github.com/libgd/libgd/pull/766 missing macros
- open https://github.com/libgd/libgd/pull/767 missing headers
* Tue Jul 27 2021 Florian Weimer <fweimer@redhat.com> - 2.3.2-9
- Rebuild again for libavif soname bump
* Thu Jul 22 2021 Robert-André Mauchin <zebob.m@gmail.com> - 2.3.2-8
- Rebuild for libavif soname bump
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.2-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Mon Jul 19 2021 Robert-André Mauchin <zebob.m@gmail.com> - 2.3.2-6
- Rebuild for libavif soname bump
* Sun May 23 2021 Robert-André Mauchin <zebob.m@gmail.com> - 2.3.2-5
- Rebuild for libavif soname bump
* Mon Mar 29 2021 Robert-André Mauchin <zebob.m@gmail.com> - 2.3.2-4
- Rebuild for libavif soname bump
* Wed Mar 17 2021 Filip Januš <fjanus@redhat.com> - 2.3.2-3
- Add condition if fedora for packages not available in RHEL
* Mon Mar 8 2021 Remi Collet <remi@remirepo.net> - 2.3.2-2
- enable avif support
- use bcond
* Mon Mar 08 2021 Ondrej Dubaj <odubaj@redhat.com> - 2.3.2-1
- rebase to version 2.3.2
* Wed Feb 3 2021 Filip Januš <fjanus@redhat.com> - 2.3.1-1
- Upstream released new version 2.3.1
- patch bug615 is no more needed - fixed by upstream in release
- gdimagestring16/gdimagestring16 gdimagestringup16/gdimagestringup16 passed on
x390s - XFAIL_TEST definition for x390s is no more necessary
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Wed Jul 15 2020 Remi Collet <remi@remirepo.net> - 2.3.0-2
- fix gdImageStringFT() fails for empty strings
https://github.com/libgd/libgd/issues/615
* Tue Mar 24 2020 Remi Collet <remi@remirepo.net> - 2.3.0-1
- update to 2.3.0
- add dependency on libraqm
- remove gdlib-config
* Fri Jan 31 2020 Filip Januš <fjanus@redhat.com> - 2.2.5-12
- Add patch(gd-2.2.5-null-pointer.patch) - fix Null pointer reference in gdImageClone (gdImagePtr src)
- Resolves: #1599032
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.5-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Fri Nov 01 2019 odubaj@redhat.com - 2.2.5-10
- Fixed heap based buffer overflow in gd_color_match.c:gdImageColorMatch() in libgd as used in imagecolormatch()
- Resolves: RHBZ#1678104 (CVE-2019-6977)
- Fixed potential double-free in gdImage*Ptr()
- Resolves: RHBZ#1671391 (CVE-2019-6978)
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.5-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.5-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Fri Sep 07 2018 mskalick@redhat.com - 2.2.5-7
- Add missing requires to libimagequent-devel
* Thu Aug 30 2018 mskalick@redhat.com - 2.2.5-6
- Use libimagequant library (RHBZ#1468338)
* Thu Aug 30 2018 mskalick@redhat.com - 2.2.5-5
- Check return value in gdImageBmpPtr to avoid double free (CVE-2018-1000222)
- Don't mark gdimagegrayscale/basic test as failing
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.5-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Mon Mar 26 2018 Marek Skalický <mskalick@redhat.com> - 2.2.5-3
- Fix CVE-2018-5711 - Potential infinite loop in gdImageCreateFromGifCtx
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Wed Aug 30 2017 Remi Collet <remi@fedoraproject.org> - 2.2.5-1
- Update to 2.2.5
- fix double-free in gdImagePngPtr(). CVE-2017-6362
- fix buffer over-read into uninitialized memory. CVE-2017-7890
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.4-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.4-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Wed Feb 01 2017 Sandro Mani <manisandro@gmail.com> - 2.2.4-2
- Rebuild (libwebp)
* Wed Jan 18 2017 Remi Collet <remi@fedoraproject.org> - 2.2.4-1
- Update to 2.2.4

View file

@ -1,42 +0,0 @@
#!/bin/sh
GETVER="${0%/*}/getver.pl"
GDLIB_MAJOR=$("${GETVER}" MAJOR)
GDLIB_MINOR=$("${GETVER}" MINOR)
GDLIB_REVISION=$("${GETVER}" RELEASE)
# Dynamic library version information
# See http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info
GDLIB_LT_CURRENT=3
# This is the version where the soname (current above) changes. We use it
# to reset the revision base back to zero. It's a bit of a pain, but some
# systems restrict the revision range below to [0..255] (like OS X).
GDLIB_PREV_MAJOR=2
GDLIB_PREV_MINOR=2
# This isn't 100% correct, but it tends to be a close enough approximation
# for how we manage the codebase. It's rare to do a release that doesn't
# modify the library since this project is centered around the library.
GDLIB_LT_REVISION=$(( ((GDLIB_MAJOR - GDLIB_PREV_MAJOR) << 6) | ((GDLIB_MINOR - GDLIB_PREV_MINOR) << 3) | GDLIB_REVISION ))
GDLIB_LT_AGE=0
# The first three fields we feed into libtool and the OS target determines how
# they get used. The last two fields we feed into cmake. We use the same rules
# as Linux SONAME versioning in libtool, but cmake should handle it for us.
case $1 in
CURRENT)
printf '%s' "${GDLIB_LT_CURRENT}"
;;
REVISION)
printf '%s' "${GDLIB_LT_REVISION}"
;;
AGE)
printf '%s' "${GDLIB_LT_AGE}"
;;
VERSION)
printf '%s' "$(( GDLIB_LT_CURRENT - GDLIB_LT_AGE )).${GDLIB_LT_AGE}.${GDLIB_LT_REVISION}"
;;
SONAME)
printf '%s' "$(( GDLIB_LT_CURRENT - GDLIB_LT_AGE ))"
;;
esac

View file

@ -1,50 +0,0 @@
From f4bc1f5c26925548662946ed7cfa473c190a104a Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@remirepo.net>
Date: Mon, 13 Sep 2021 14:57:52 +0200
Subject: [PATCH 1/2] Revert "Fix #318, these macros are not used as planed, we
have separate functions for each"
This reverts commit bdc281eadb1d58d5c0c7bbc1125ee4674256df08.
---
src/gd.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/gd.h b/src/gd.h
index 30560395..1ad9e637 100644
--- a/src/gd.h
+++ b/src/gd.h
@@ -1604,6 +1604,11 @@ BGD_DECLARE(void) gdImageFlipHorizontal(gdImagePtr im);
BGD_DECLARE(void) gdImageFlipVertical(gdImagePtr im);
BGD_DECLARE(void) gdImageFlipBoth(gdImagePtr im);
+#define GD_FLIP_HORINZONTAL 1 /* typo, kept for BC */
+#define GD_FLIP_HORIZONTAL 1
+#define GD_FLIP_VERTICAL 2
+#define GD_FLIP_BOTH 3
+
/**
* Group: Crop
*
From e47c619d792455aad23708d2ec2947455394427e Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@remirepo.net>
Date: Mon, 13 Sep 2021 14:59:47 +0200
Subject: [PATCH 2/2] add comment to not remove these macros
---
src/gd.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/gd.h b/src/gd.h
index 1ad9e637..71f5a89c 100644
--- a/src/gd.h
+++ b/src/gd.h
@@ -1604,6 +1604,8 @@ BGD_DECLARE(void) gdImageFlipHorizontal(gdImagePtr im);
BGD_DECLARE(void) gdImageFlipVertical(gdImagePtr im);
BGD_DECLARE(void) gdImageFlipBoth(gdImagePtr im);
+/* Macros still used in gd extension up to PHP 8.0
+ so please keep these unused macros for now */
#define GD_FLIP_HORINZONTAL 1 /* typo, kept for BC */
#define GD_FLIP_HORIZONTAL 1
#define GD_FLIP_VERTICAL 2

View file

@ -1,35 +0,0 @@
From 01bcbdcae35b90de082012e639094c711a7aa2b3 Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@remirepo.net>
Date: Mon, 13 Sep 2021 15:05:18 +0200
Subject: [PATCH] install missing header, used by gdpp.h
---
src/CMakeLists.txt | 1 +
src/Makefile.am | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 3839bc78..c1eea100 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -194,6 +194,7 @@ install(FILES
gdfontt.h
gdfx.h
gdpp.h
+ gd_io_stream.h
DESTINATION include)
CONFIGURE_FILE(../config/gdlib.pc.cmake gdlib.pc @ONLY)
diff --git a/src/Makefile.am b/src/Makefile.am
index dbe9243c..c8c779f1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -52,7 +52,7 @@ EXTRA_DIST = \
msinttypes/inttypes.h \
msinttypes/stdint.h
-include_HEADERS = gd.h gdfx.h gd_io.h gdcache.h gdfontg.h gdfontl.h gdfontmb.h gdfonts.h gdfontt.h gd_color_map.h gd_errors.h gdpp.h
+include_HEADERS = gd.h gdfx.h gd_io.h gdcache.h gdfontg.h gdfontl.h gdfontmb.h gdfonts.h gdfontt.h gd_color_map.h gd_errors.h gdpp.h gd_io_stream.h
lib_LTLIBRARIES = libgd.la

View file

@ -1 +1 @@
SHA512 (libgd-2.3.3.tar.xz) = aa49d4381d604a4360d556419d603df2ffd689a6dcc10f8e5e1d158ddaa3ab89912f6077ca77da4e370055074007971cf6d356ec9bf26dcf39bcff3208bc7e6c
SHA512 (libgd-2.2.5.tar.xz) = 946675b0a9dbecdee3dda927d496a35d6b5b071d3252a82cd649db0d959a82fcc65ce067ec34d07eed0e0497cd92cc0d93803609a4854f42d284e950764044d0