diff --git a/CMakeLists.txt b/CMakeLists.txt index b69a03d..5bd836c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,7 @@ -cmake_minimum_required(VERSION 2.6.0) +cmake_minimum_required(VERSION 3.5) project(giflib C) +include(GNUInstallDirs) SET(BUILD_STATIC_LIBS OFF CACHE BOOL "Whether to also build static libs") @@ -77,21 +78,21 @@ endforeach() ### Installation install(TARGETS gif - RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib${LIB_SUFFIX} - LIBRARY DESTINATION lib${LIB_SUFFIX} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) if(${BUILD_STATIC_LIBS}) - install(TARGETS gif_static ARCHIVE DESTINATION lib${LIB_SUFFIX}) + install(TARGETS gif_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif(${BUILD_STATIC_LIBS}) foreach(UTILITY ${giflib_UTILS}) - install(TARGETS ${UTILITY} DESTINATION bin) + install(TARGETS ${UTILITY} DESTINATION ${CMAKE_INSTALL_BINDIR}) endforeach() -install(FILES gif_lib.h DESTINATION include) -install(FILES ${giflib_MAN} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man/man1) +install(FILES gif_lib.h gif_getarg.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +install(FILES ${giflib_MAN} DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) ### Distribution tarball diff --git a/getarg.patch b/getarg.patch new file mode 100644 index 0000000..4026183 --- /dev/null +++ b/getarg.patch @@ -0,0 +1,308 @@ +diff -rupN --no-dereference giflib-5.2.2/getarg.c giflib-5.2.2-new/getarg.c +--- giflib-5.2.2/getarg.c 2024-02-19 04:01:27.000000000 +0100 ++++ giflib-5.2.2-new/getarg.c 2025-04-15 16:56:27.276152030 +0200 +@@ -112,7 +112,7 @@ SPDX-License-Identifier: MIT + #include + #include + +-#include "getarg.h" ++#include "gif_getarg.h" + + #define MAX_PARAM 100 /* maximum number of parameters allowed. */ + #define CTRL_STR_MAX_LEN 1024 +diff -rupN --no-dereference giflib-5.2.2/getarg.h giflib-5.2.2-new/getarg.h +--- giflib-5.2.2/getarg.h 2024-02-19 03:20:00.000000000 +0100 ++++ giflib-5.2.2-new/getarg.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,54 +0,0 @@ +-/*************************************************************************** +- +-getarg.h - Support routines for the giflib utilities +- +-SPDX-License-Identifier: MIT +- +- **************************************************************************/ +- +-#ifndef _GETARG_H +-#define _GETARG_H +- +-#include "gif_lib.h" +-#include +- +-#define VERSION_COOKIE " Version %d.%d, " +- +-/*************************************************************************** +- Error numbers as returned by GAGetArg routine: +-***************************************************************************/ +-#define CMD_ERR_NotAnOpt 1 /* None Option found. */ +-#define CMD_ERR_NoSuchOpt 2 /* Undefined Option Found. */ +-#define CMD_ERR_WildEmpty 3 /* Empty input for !*? seq. */ +-#define CMD_ERR_NumRead 4 /* Failed on reading number. */ +-#define CMD_ERR_AllSatis 5 /* Fail to satisfy (must-'!') option. */ +- +-bool GAGetArgs(int argc, char **argv, char *CtrlStr, ...); +-void GAPrintErrMsg(int Error); +-void GAPrintHowTo(char *CtrlStr); +- +-/****************************************************************************** +- From qprintf.c +-******************************************************************************/ +-extern void GifQprintf(char *Format, ...); +-extern void PrintGifError(int ErrorCode); +- +-/****************************************************************************** +- Color table quantization +-******************************************************************************/ +-int GifQuantizeBuffer(unsigned int Width, unsigned int Height, +- int *ColorMapSize, GifByteType *RedInput, +- GifByteType *GreenInput, GifByteType *BlueInput, +- GifByteType *OutputBuffer, GifColorType *OutputColorMap); +- +-/* These used to live in the library header */ +-#define GIF_MESSAGE(Msg) fprintf(stderr, "\n%s: %s\n", PROGRAM_NAME, Msg) +-#define GIF_EXIT(Msg) \ +- { \ +- GIF_MESSAGE(Msg); \ +- exit(-3); \ +- } +- +-#endif /* _GETARG_H */ +- +-/* end */ +diff -rupN --no-dereference giflib-5.2.2/gif2rgb.c giflib-5.2.2-new/gif2rgb.c +--- giflib-5.2.2/gif2rgb.c 2025-04-15 16:56:27.247167987 +0200 ++++ giflib-5.2.2-new/gif2rgb.c 2025-04-15 16:56:27.276617411 +0200 +@@ -34,7 +34,7 @@ with our utilities mainly interesting as + #include + #endif /* _WIN32 */ + +-#include "getarg.h" ++#include "gif_getarg.h" + #include "gif_lib.h" + + #define PROGRAM_NAME "gif2rgb" +diff -rupN --no-dereference giflib-5.2.2/gifbg.c giflib-5.2.2-new/gifbg.c +--- giflib-5.2.2/gifbg.c 2024-02-19 04:01:28.000000000 +0100 ++++ giflib-5.2.2-new/gifbg.c 2025-04-15 16:56:27.276870781 +0200 +@@ -12,7 +12,7 @@ SPDX-License-Identifier: MIT + #include + #include + +-#include "getarg.h" ++#include "gif_getarg.h" + #include "gif_lib.h" + + #define PROGRAM_NAME "gifbg" +diff -rupN --no-dereference giflib-5.2.2/gifbuild.c giflib-5.2.2-new/gifbuild.c +--- giflib-5.2.2/gifbuild.c 2024-02-19 04:05:16.000000000 +0100 ++++ giflib-5.2.2-new/gifbuild.c 2025-04-15 16:56:27.277111740 +0200 +@@ -12,7 +12,7 @@ SPDX-License-Identifier: MIT + #include + #include + +-#include "getarg.h" ++#include "gif_getarg.h" + #include "gif_lib.h" + + #define PROGRAM_NAME "gifbuild" +diff -rupN --no-dereference giflib-5.2.2/gifclrmp.c giflib-5.2.2-new/gifclrmp.c +--- giflib-5.2.2/gifclrmp.c 2024-02-19 04:01:27.000000000 +0100 ++++ giflib-5.2.2-new/gifclrmp.c 2025-04-15 16:56:27.277368098 +0200 +@@ -14,7 +14,7 @@ SPDX-License-Identifier: MIT + #include + #include + +-#include "getarg.h" ++#include "gif_getarg.h" + #include "gif_lib.h" + + #define PROGRAM_NAME "gifclrmp" +diff -rupN --no-dereference giflib-5.2.2/gifcolor.c giflib-5.2.2-new/gifcolor.c +--- giflib-5.2.2/gifcolor.c 2024-02-19 04:01:28.000000000 +0100 ++++ giflib-5.2.2-new/gifcolor.c 2025-04-15 16:56:27.277585194 +0200 +@@ -12,7 +12,7 @@ SPDX-License-Identifier: MIT + #include + #include + +-#include "getarg.h" ++#include "gif_getarg.h" + #include "gif_lib.h" + + #define PROGRAM_NAME "gifcolor" +diff -rupN --no-dereference giflib-5.2.2/gifecho.c giflib-5.2.2-new/gifecho.c +--- giflib-5.2.2/gifecho.c 2024-02-19 04:01:27.000000000 +0100 ++++ giflib-5.2.2-new/gifecho.c 2025-04-15 16:56:27.277769355 +0200 +@@ -12,7 +12,7 @@ SPDX-License-Identifier: MIT + #include + #include + +-#include "getarg.h" ++#include "gif_getarg.h" + #include "gif_lib.h" + + #define PROGRAM_NAME "gifecho" +diff -rupN --no-dereference giflib-5.2.2/giffilter.c giflib-5.2.2-new/giffilter.c +--- giflib-5.2.2/giffilter.c 2024-02-19 04:01:28.000000000 +0100 ++++ giflib-5.2.2-new/giffilter.c 2025-04-15 16:56:27.277955467 +0200 +@@ -25,7 +25,7 @@ SPDX-License-Identifier: MIT + #include + #include + +-#include "getarg.h" ++#include "gif_getarg.h" + #include "gif_lib.h" + + #define PROGRAM_NAME "giffilter" +diff -rupN --no-dereference giflib-5.2.2/giffix.c giflib-5.2.2-new/giffix.c +--- giflib-5.2.2/giffix.c 2024-02-19 04:01:27.000000000 +0100 ++++ giflib-5.2.2-new/giffix.c 2025-04-15 16:56:27.278150152 +0200 +@@ -12,7 +12,7 @@ SPDX-License-Identifier: MIT + #include + #include + +-#include "getarg.h" ++#include "gif_getarg.h" + #include "gif_lib.h" + + #define PROGRAM_NAME "giffix" +diff -rupN --no-dereference giflib-5.2.2/gif_getarg.h giflib-5.2.2-new/gif_getarg.h +--- giflib-5.2.2/gif_getarg.h 1970-01-01 01:00:00.000000000 +0100 ++++ giflib-5.2.2-new/gif_getarg.h 2025-04-15 16:56:27.278343984 +0200 +@@ -0,0 +1,54 @@ ++/*************************************************************************** ++ ++getarg.h - Support routines for the giflib utilities ++ ++SPDX-License-Identifier: MIT ++ ++ **************************************************************************/ ++ ++#ifndef _GETARG_H ++#define _GETARG_H ++ ++#include "gif_lib.h" ++#include ++ ++#define VERSION_COOKIE " Version %d.%d, " ++ ++/*************************************************************************** ++ Error numbers as returned by GAGetArg routine: ++***************************************************************************/ ++#define CMD_ERR_NotAnOpt 1 /* None Option found. */ ++#define CMD_ERR_NoSuchOpt 2 /* Undefined Option Found. */ ++#define CMD_ERR_WildEmpty 3 /* Empty input for !*? seq. */ ++#define CMD_ERR_NumRead 4 /* Failed on reading number. */ ++#define CMD_ERR_AllSatis 5 /* Fail to satisfy (must-'!') option. */ ++ ++bool GAGetArgs(int argc, char **argv, char *CtrlStr, ...); ++void GAPrintErrMsg(int Error); ++void GAPrintHowTo(char *CtrlStr); ++ ++/****************************************************************************** ++ From qprintf.c ++******************************************************************************/ ++extern void GifQprintf(char *Format, ...); ++extern void PrintGifError(int ErrorCode); ++ ++/****************************************************************************** ++ Color table quantization ++******************************************************************************/ ++int GifQuantizeBuffer(unsigned int Width, unsigned int Height, ++ int *ColorMapSize, GifByteType *RedInput, ++ GifByteType *GreenInput, GifByteType *BlueInput, ++ GifByteType *OutputBuffer, GifColorType *OutputColorMap); ++ ++/* These used to live in the library header */ ++#define GIF_MESSAGE(Msg) fprintf(stderr, "\n%s: %s\n", PROGRAM_NAME, Msg) ++#define GIF_EXIT(Msg) \ ++ { \ ++ GIF_MESSAGE(Msg); \ ++ exit(-3); \ ++ } ++ ++#endif /* _GETARG_H */ ++ ++/* end */ +diff -rupN --no-dereference giflib-5.2.2/gifhisto.c giflib-5.2.2-new/gifhisto.c +--- giflib-5.2.2/gifhisto.c 2024-02-19 04:01:28.000000000 +0100 ++++ giflib-5.2.2-new/gifhisto.c 2025-04-15 16:56:27.278489203 +0200 +@@ -12,7 +12,7 @@ SPDX-License-Identifier: MIT + #include + #include + +-#include "getarg.h" ++#include "gif_getarg.h" + #include "gif_lib.h" + + #define PROGRAM_NAME "gifhisto" +diff -rupN --no-dereference giflib-5.2.2/gifinto.c giflib-5.2.2-new/gifinto.c +--- giflib-5.2.2/gifinto.c 2024-02-19 04:01:28.000000000 +0100 ++++ giflib-5.2.2-new/gifinto.c 2025-04-15 16:56:27.278753624 +0200 +@@ -19,7 +19,7 @@ SPDX-License-Identifier: MIT + #include + #endif /* _WIN32 */ + +-#include "getarg.h" ++#include "gif_getarg.h" + #include "gif_lib.h" + + #define PROGRAM_NAME "gifinto" +diff -rupN --no-dereference giflib-5.2.2/gifsponge.c giflib-5.2.2-new/gifsponge.c +--- giflib-5.2.2/gifsponge.c 2024-02-19 04:01:28.000000000 +0100 ++++ giflib-5.2.2-new/gifsponge.c 2025-04-15 16:56:27.278945283 +0200 +@@ -25,7 +25,7 @@ SPDX-License-Identifier: MIT + #include + #include + +-#include "getarg.h" ++#include "gif_getarg.h" + #include "gif_lib.h" + + #define PROGRAM_NAME "gifsponge" +diff -rupN --no-dereference giflib-5.2.2/giftext.c giflib-5.2.2-new/giftext.c +--- giflib-5.2.2/giftext.c 2024-02-19 04:01:28.000000000 +0100 ++++ giflib-5.2.2-new/giftext.c 2025-04-15 16:56:27.279142751 +0200 +@@ -16,7 +16,7 @@ SPDX-License-Identifier: MIT + #include + #endif /* _WIN32 */ + +-#include "getarg.h" ++#include "gif_getarg.h" + #include "gif_lib.h" + + #define PROGRAM_NAME "giftext" +diff -rupN --no-dereference giflib-5.2.2/giftool.c giflib-5.2.2-new/giftool.c +--- giflib-5.2.2/giftool.c 2024-02-19 04:01:28.000000000 +0100 ++++ giflib-5.2.2-new/giftool.c 2025-04-15 16:56:27.279376975 +0200 +@@ -12,7 +12,7 @@ SPDX-License-Identifier: MIT + #include + #include + +-#include "getarg.h" ++#include "gif_getarg.h" + #include "getopt.h" + #include "gif_lib.h" + +diff -rupN --no-dereference giflib-5.2.2/gifwedge.c giflib-5.2.2-new/gifwedge.c +--- giflib-5.2.2/gifwedge.c 2024-02-19 04:01:27.000000000 +0100 ++++ giflib-5.2.2-new/gifwedge.c 2025-04-15 16:56:27.279666309 +0200 +@@ -12,7 +12,7 @@ SPDX-License-Identifier: MIT + #include + #include + +-#include "getarg.h" ++#include "gif_getarg.h" + #include "gif_lib.h" + + #define PROGRAM_NAME "gifwedge" +diff -rupN --no-dereference giflib-5.2.2/Makefile giflib-5.2.2-new/Makefile +--- giflib-5.2.2/Makefile 2025-04-15 16:56:27.223615747 +0200 ++++ giflib-5.2.2-new/Makefile 2025-04-15 16:56:27.279870038 +0200 +@@ -34,7 +34,7 @@ HEADERS = gif_hash.h gif_lib.h gif_lib + OBJECTS = $(SOURCES:.c=.o) + + USOURCES = qprintf.c getarg.c +-UHEADERS = getarg.h ++UHEADERS = gif_getarg.h + UOBJECTS = $(USOURCES:.c=.o) + + UNAME:=$(shell uname) diff --git a/giflib-5.2.2-cve-2025-31344.patch b/giflib-5.2.2-cve-2025-31344.patch new file mode 100644 index 0000000..bf9abfd --- /dev/null +++ b/giflib-5.2.2-cve-2025-31344.patch @@ -0,0 +1,15 @@ +diff -rupN --no-dereference giflib-5.2.2/gif2rgb.c giflib-5.2.2-new/gif2rgb.c +--- giflib-5.2.2/gif2rgb.c 2025-04-15 16:56:27.300766548 +0200 ++++ giflib-5.2.2-new/gif2rgb.c 2025-04-15 16:56:27.308678722 +0200 +@@ -337,6 +337,11 @@ static void DumpScreen2RGB(char *FileNam + GifRow = ScreenBuffer[i]; + GifQprintf("\b\b\b\b%-4d", ScreenHeight - i); + for (j = 0; j < ScreenWidth; j++) { ++ /* Check if color is within color palete */ ++ if (GifRow[j] >= ColorMap->ColorCount) { ++ GIF_EXIT(GifErrorString( ++ D_GIF_ERR_IMAGE_DEFECT)); ++ } + ColorMapEntry = &ColorMap->Colors[GifRow[j]]; + Buffers[0][j] = ColorMapEntry->Red; + Buffers[1][j] = ColorMapEntry->Green; diff --git a/giflib.spec b/giflib.spec index fe98d4d..682379f 100644 --- a/giflib.spec +++ b/giflib.spec @@ -1,7 +1,7 @@ Name: giflib Summary: A library and utilities for processing GIFs Version: 5.2.2 -Release: 1%{?dist} +Release: 8%{?dist} License: MIT URL: http://www.sourceforge.net/projects/%{name}/ @@ -14,16 +14,20 @@ Patch0: giflib_quantize.patch Patch1: giflib_coverity.patch # Generate HTML docs with consistent section IDs to avoid multilib difference Patch2: giflib_html-docs-consistent-ids.patch - +# Rename getarg.h to gif_getarg.h +# https://sourceforge.net/p/giflib/code/merge-requests/18/ +Patch3: getarg.patch +# Proposed patch for CVE-2025-31344 +Patch4: https://raw.githubusercontent.com/OpenMandrivaAssociation/giflib/refs/heads/master/giflib-5.2.2-cve-2025-31344.patch BuildRequires: cmake BuildRequires: gcc BuildRequires: xmlto -BuildRequires: mingw32-filesystem >= 95 +BuildRequires: mingw32-filesystem BuildRequires: mingw32-gcc -BuildRequires: mingw64-filesystem >= 95 +BuildRequires: mingw64-filesystem BuildRequires: mingw64-gcc @@ -91,7 +95,6 @@ BuildArch: noarch %autosetup -p1 cp -a %{SOURCE1} . - %build # Native build %cmake @@ -121,6 +124,7 @@ rm -rf %{buildroot}%{mingw64_mandir} %doc doc/* %{_libdir}/libgif.so %{_includedir}/gif_lib.h +%{_includedir}/gif_getarg.h %files utils %{_bindir}/gif* @@ -130,6 +134,7 @@ rm -rf %{buildroot}%{mingw64_mandir} %license COPYING %{mingw32_bindir}/libgif-7.dll %{mingw32_includedir}/gif_lib.h +%{mingw32_includedir}/gif_getarg.h %{mingw32_libdir}/libgif.dll.a %files -n mingw32-%{name}-tools @@ -139,6 +144,7 @@ rm -rf %{buildroot}%{mingw64_mandir} %license COPYING %{mingw64_bindir}/libgif-7.dll %{mingw64_includedir}/gif_lib.h +%{mingw64_includedir}/gif_getarg.h %{mingw64_libdir}/libgif.dll.a %files -n mingw64-%{name}-tools @@ -146,6 +152,28 @@ rm -rf %{buildroot}%{mingw64_mandir} %changelog +* Wed Jul 23 2025 Fedora Release Engineering - 5.2.2-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Wed Jul 16 2025 Sandro Mani - 5.2.2-7 +- Increase minimum cmake version to 3.5 +- Use GnuInstallDirs + +* Tue Apr 15 2025 Sandro Mani - 5.2.2-6 +- Add proposed patch for CVE-2025-31334 + +* Wed Apr 02 2025 Benson Muite - 5.2.2-5 +- Rename getarg.h to gif_getarg.h + +* Wed Apr 02 2025 Benson Muite - 5.2.2-4 +- Install getarg.h header file + +* Thu Jan 16 2025 Fedora Release Engineering - 5.2.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Thu Jul 18 2024 Fedora Release Engineering - 5.2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Mon Feb 19 2024 Sandro Mani - 5.2.2-1 - Update to 5.2.2 diff --git a/giflib_coverity.patch b/giflib_coverity.patch index 0e995ae..acba905 100644 --- a/giflib_coverity.patch +++ b/giflib_coverity.patch @@ -1,6 +1,6 @@ diff -rupN --no-dereference giflib-5.2.2/gif2rgb.c giflib-5.2.2-new/gif2rgb.c --- giflib-5.2.2/gif2rgb.c 2024-02-19 04:01:28.000000000 +0100 -+++ giflib-5.2.2-new/gif2rgb.c 2024-02-19 09:39:38.750976758 +0100 ++++ giflib-5.2.2-new/gif2rgb.c 2025-04-15 16:56:27.228197561 +0200 @@ -165,6 +165,8 @@ static void SaveGif(GifByteType *OutputB /* Open stdout for the output file: */ if ((GifFile = EGifOpenFileHandle(1, &Error)) == NULL) { diff --git a/giflib_html-docs-consistent-ids.patch b/giflib_html-docs-consistent-ids.patch index fd29642..ea3da5b 100644 --- a/giflib_html-docs-consistent-ids.patch +++ b/giflib_html-docs-consistent-ids.patch @@ -1,6 +1,6 @@ diff -rupN --no-dereference giflib-5.2.2/doc/Makefile giflib-5.2.2-new/doc/Makefile --- giflib-5.2.2/doc/Makefile 2024-02-18 19:15:05.000000000 +0100 -+++ giflib-5.2.2-new/doc/Makefile 2024-02-19 09:39:38.785968237 +0100 ++++ giflib-5.2.2-new/doc/Makefile 2025-04-15 16:56:27.252074979 +0200 @@ -1,7 +1,7 @@ .SUFFIXES: .xml .html .txt .adoc .1 .7 diff --git a/giflib_quantize.patch b/giflib_quantize.patch index 57c2b69..66c48e0 100644 --- a/giflib_quantize.patch +++ b/giflib_quantize.patch @@ -1,6 +1,6 @@ diff -rupN --no-dereference giflib-5.2.2/Makefile giflib-5.2.2-new/Makefile --- giflib-5.2.2/Makefile 2024-02-19 02:01:50.000000000 +0100 -+++ giflib-5.2.2-new/Makefile 2024-02-19 09:39:38.715985279 +0100 ++++ giflib-5.2.2-new/Makefile 2025-04-15 16:56:27.204960961 +0200 @@ -29,11 +29,11 @@ LIBPOINT=0 LIBVER=$(LIBMAJOR).$(LIBMINOR).$(LIBPOINT)