diff --git a/.gitignore b/.gitignore index 1fb1734..cbfea7a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,8 @@ giflib-4.1.6.tar.bz2 +/giflib-5.1.4.tar.bz2 +/giflib-5.1.6.tar.gz +/giflib-5.1.7.tar.gz +/giflib-5.1.8.tar.gz +/giflib-5.1.9.tar.gz +/giflib-5.2.1.tar.gz +/giflib-5.2.2.tar.gz diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..5bd836c --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,142 @@ +cmake_minimum_required(VERSION 3.5) + +project(giflib C) +include(GNUInstallDirs) + +SET(BUILD_STATIC_LIBS OFF CACHE BOOL "Whether to also build static libs") + +execute_process(COMMAND ./getversion + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE +) + +set(LIBMAJOR 7) +set(LIBMINOR 1) +set(LIBPOINT 0) +set(LIBVER "${LIBMAJOR}.${LIBMINOR}.${LIBPOINT}") + +set(giflib_SRC + dgif_lib.c + egif_lib.c + getarg.c + gifalloc.c + gif_err.c + gif_font.c + gif_hash.c + openbsd-reallocarray.c + qprintf.c + quantize.c +) + +# Some utilities are installed +set(giflib_INSTALLABLE + gif2rgb + gifbuild + giffix + giftext + giftool + gifclrmp +) + +# Some utilities are only used internally for testing. +# There is a parallel list in doc/Makefile. +# These are all candidates for removal in future releases. +set(giflib_UTILS + ${giflib_INSTALLABLE} + gifbg + gifcolor + gifecho + giffilter + gifhisto + gifinto + gifwedge +) + +file(GLOB giflib_MAN doc/*.1) + +### Build library / tools + +add_library(gif SHARED ${giflib_SRC}) +target_link_libraries(gif m) +set_target_properties(gif PROPERTIES VERSION ${LIBVER} SOVERSION ${LIBMAJOR}) +if(WIN32) + set_target_properties(gif PROPERTIES SUFFIX "-${LIBMAJOR}${CMAKE_SHARED_LIBRARY_SUFFIX}") +endif(WIN32) + +if(${BUILD_STATIC_LIBS}) + add_library(gif_static STATIC ${giflib_SRC}) + set_target_properties(gif_static PROPERTIES OUTPUT_NAME gif) +endif(${BUILD_STATIC_LIBS}) + + +foreach(UTILITY ${giflib_UTILS}) + add_executable(${UTILITY} ${UTILITY}.c) + target_link_libraries(${UTILITY} gif) +endforeach() + +### Installation + +install(TARGETS gif + 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 ${CMAKE_INSTALL_LIBDIR}) +endif(${BUILD_STATIC_LIBS}) + +foreach(UTILITY ${giflib_UTILS}) + install(TARGETS ${UTILITY} DESTINATION ${CMAKE_INSTALL_BINDIR}) +endforeach() + +install(FILES gif_lib.h gif_getarg.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +install(FILES ${giflib_MAN} DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) + + +### Distribution tarball +set(giflib_DIST + *.c + *.h + README + NEWS + TODO + COPYING + getversion + ChangeLog + CMakeLists.txt + build.adoc + history.adoc + control + doc/whatsinagif + doc/*.1 + doc/*.xml + doc/*.txt + doc/index.html.in + doc/00README + doc/Makefile + tests + pic +) +# We include all of the XML, and also generated manual pages +# so people working from the distribution tarball won't need xmlto. +add_custom_target(dist-gz + COMMAND tar --transform='s:^:giflib-${VERSION}/:' -czf giflib-${VERSION}.tar.gz ${giflib_DIST} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} +) + +add_custom_target(dist-bz2 + COMMAND tar --transform='s:^:giflib-${VERSION}/:' -cjf giflib-${VERSION}.tar.bz2 ${giflib_DIST} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} +) + +add_custom_target(dist DEPENDS dist-gz DEPENDS dist-bz2) + + +### Auditing tools + +# cppcheck should run clean +add_custom_target(cppcheck + COMMAND cppcheck --inline-suppr --template gcc --enable=all --suppress=unusedFunction --force *.[ch] +) 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 492ead6..682379f 100644 --- a/giflib.spec +++ b/giflib.spec @@ -1,95 +1,318 @@ -Summary: Library for manipulating GIF format image files -Name: giflib -Version: 4.1.6 -Release: 4%{?dist} -License: MIT -Group: System Environment/Libraries -URL: http://www.sourceforge.net/projects/%{name}/ -Source: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.bz2 -BuildRequires: libX11-devel, libICE-devel, libSM-devel, libXt-devel -Provides: libungif = %{version}-%{release} -Obsoletes: libungif <= %{version}-%{release} -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +Name: giflib +Summary: A library and utilities for processing GIFs +Version: 5.2.2 +Release: 8%{?dist} + +License: MIT +URL: http://www.sourceforge.net/projects/%{name}/ +Source: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz +# Downstream cmake support +Source1: CMakeLists.txt +# Move quantize.c back into libgif.so (#1750122) +Patch0: giflib_quantize.patch +# Fix several defects found by Coverity scan +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 +BuildRequires: mingw32-gcc + +BuildRequires: mingw64-filesystem +BuildRequires: mingw64-gcc + %description -The giflib package contains a shared library of functions for loading and -saving GIF format image files. It is API and ABI compatible with libungif, -the library which supported uncompressed GIFs while the Unisys LZW patent -was in effect. +giflib is a library for reading and writing gif images. + %package devel -Summary: Development tools for programs using the giflib library -Group: Development/Libraries -Requires: %{name} = %{version}-%{release} -Provides: libungif-devel = %{version}-%{release} -Obsoletes: libungif-devel <= %{version}-%{release} +Summary: Development files for programs using the giflib library +Requires: %{name}%{?_isa} = %{version}-%{release} %description devel The giflib-devel package includes header files, libraries necessary for -developing programs which use the giflib library to load and save GIF format -image files. It contains the documentation of the giflib library, too. +developing programs which use the giflib library. + %package utils -Summary: Programs for manipulating GIF format image files -Group: Applications/Multimedia -Requires: %{name} = %{version}-%{release} -Provides: libungif-progs = %{version}-%{release} -Obsoletes: libungif-progs <= %{version}-%{release} +Summary: Programs for manipulating GIF format image files +Requires: %{name}%{?_isa} = %{version}-%{release} %description utils The giflib-utils package contains various programs for manipulating GIF -format image files. Install it if you need to manipulate GIF format image -files. +format image files. + +%package -n mingw32-%{name} +Summary: MinGW Windows %{name} library +Obsoletes: mingw32-%{name}-static +BuildArch: noarch + +%description -n mingw32-%{name} +%{summary}. + + +%package -n mingw32-%{name}-tools +Summary: Tools for the MinGW Windows %{name} library +Requires: mingw32-%{name} = %{version}-%{release} +BuildArch: noarch + +%description -n mingw32-%{name}-tools +%{summary}. + + +%package -n mingw64-%{name} +Summary: MinGW Windows %{name} library +Obsoletes: mingw64-%{name}-static +BuildArch: noarch + +%description -n mingw64-%{name} +%{summary}. + + +%package -n mingw64-%{name}-tools +Summary: Tools for the MinGW Windows %{name} library +Requires: mingw64-%{name} = %{version}-%{release} +BuildArch: noarch + +%description -n mingw64-%{name}-tools +%{summary}. + + +%{?mingw_debug_package} + %prep -%setup -q +%autosetup -p1 +cp -a %{SOURCE1} . %build -%configure -make %{?_smp_mflags} all +# Native build +%cmake +%cmake_build + +# MinGW build +%mingw_cmake +%mingw_make_build -# Handling of libungif compatibility -MAJOR=`echo '%{version}' | sed -e 's/\([0-9]\+\)\..*/\1/'` -%{__cc} $RPM_OPT_FLAGS -shared -Wl,-soname,libungif.so.$MAJOR -Llib/.libs -lgif -o libungif.so.%{version} %install -rm -rf $RPM_BUILD_ROOT -make DESTDIR=$RPM_BUILD_ROOT INSTALL='install -p' install +%cmake_install +%mingw_make_install +rm -rf %{buildroot}%{mingw32_mandir} +rm -rf %{buildroot}%{mingw64_mandir} -# Handling of libungif compatibility -install -p -m 755 libungif.so.%{version} $RPM_BUILD_ROOT%{_libdir} -ln -sf libungif.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libungif.so.4 -ln -sf libungif.so.4 $RPM_BUILD_ROOT%{_libdir}/libungif.so -# Don't install any static .a and libtool .la files -rm -f $RPM_BUILD_ROOT%{_libdir}/*.{a,la} +%mingw_debug_install_post -# Remove makefile relics from documentation -rm -f doc/Makefile* -%clean -rm -rf $RPM_BUILD_ROOT - -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig - -%files -%defattr(-,root,root,-) -%doc AUTHORS ChangeLog COPYING NEWS README -%{_libdir}/lib*.so.* +%files +%doc ChangeLog NEWS README +%license COPYING +%{_libdir}/libgif.so.7* %files devel -%defattr(-,root,root,-) -%doc doc/* util/giffiltr.c util/gifspnge.c -%{_libdir}/lib*.so -%{_includedir}/*.h +%doc doc/* +%{_libdir}/libgif.so +%{_includedir}/gif_lib.h +%{_includedir}/gif_getarg.h %files utils -%defattr(-,root,root,-) -%{_bindir}/* +%{_bindir}/gif* +%{_mandir}/man1/*.1* + +%files -n mingw32-%{name} +%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 +%{mingw32_bindir}/*.exe + +%files -n mingw64-%{name} +%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 +%{mingw64_bindir}/*.exe + %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 + +* Wed Jan 24 2024 Fedora Release Engineering - 5.2.1-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 5.2.1-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Sep 14 2023 Sandro Mani - 5.2.1-17 +- Add patch for CVE-2023-39742 + +* Wed Jul 19 2023 Fedora Release Engineering - 5.2.1-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jan 19 2023 Fedora Release Engineering - 5.2.1-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Jul 21 2022 Sandro Mani - 5.2.1-14 +- Backport fix for CVE-2022-28506 + +* Thu Jul 21 2022 Fedora Release Engineering - 5.2.1-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Fri Mar 25 2022 Sandro Mani - 5.2.1-12 +- Rebuild with mingw-gcc-12 + +* Thu Feb 24 2022 Sandro Mani - 5.2.1-11 +- Make mingw subpackages noarch + +* Sat Feb 19 2022 Sandro Mani - 5.2.1-10 +- Add mingw subpackage + +* Thu Jan 20 2022 Fedora Release Engineering - 5.2.1-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Thu Jul 22 2021 Fedora Release Engineering - 5.2.1-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Jan 26 2021 Fedora Release Engineering - 5.2.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 5.2.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Feb 17 2020 Sandro Mani - 5.2.1-5 +- Fix several defects found by Coverity scan +- Generate HTML docs with consistent section IDs to avoid multilib difference + +* Tue Jan 28 2020 Fedora Release Engineering - 5.2.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Tue Oct 01 2019 Sandro Mani - 5.2.1-3 +- Move quantize.c back into libgif.so (#1750122) + +* Thu Jul 25 2019 Fedora Release Engineering - 5.2.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Jun 28 2019 Sandro Mani - 5.2.1-1 +- Update to 5.2.1 + +* Mon Apr 01 2019 Sandro Mani - 5.1.9-1 +- Update to 5.1.9 + +* Wed Mar 20 2019 Sandro Mani - 5.1.8-1 +- Update to 5.1.8 + +* Mon Mar 11 2019 Sandro Mani - 5.1.7-1 +- Update to 5.1.7 + +* Sat Feb 23 2019 Sandro Mani - 5.1.6-2 +- Fix broken soname + +* Mon Feb 18 2019 Sandro Mani - 5.1.6-1 +- Update to 5.1.6 + +* Thu Jan 31 2019 Fedora Release Engineering - 5.1.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jul 13 2018 Fedora Release Engineering - 5.1.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Sun Feb 11 2018 Sandro Mani - 5.1.4-1 +- Update to 5.1.4 + +* Thu Feb 8 2018 Florian Weimer - 4.1.6-22 +- Build libungif with linker flags from redhat-rpm-config + +* Wed Feb 07 2018 Fedora Release Engineering - 4.1.6-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Feb 03 2018 Igor Gnatenko - 4.1.6-20 +- Switch to %%ldconfig_scriptlets + +* Wed Aug 02 2017 Fedora Release Engineering - 4.1.6-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 4.1.6-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Mar 29 2017 Stephen Gallagher - 4.1.6-17 +- Fix compilation errors when -Werror=format-security + +* Fri Feb 10 2017 Fedora Release Engineering - 4.1.6-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Feb 03 2016 Fedora Release Engineering - 4.1.6-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Aug 14 2015 Adam Jackson 4.1.6-14 +- Link libungif with -z now too + +* Wed Jun 17 2015 Fedora Release Engineering - 4.1.6-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sat Aug 16 2014 Fedora Release Engineering - 4.1.6-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 4.1.6-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed Dec 18 2013 Peter Robinson 4.1.6-10 +- Rebuild + +* Sat Aug 03 2013 Fedora Release Engineering - 4.1.6-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Jul 17 2013 Petr Pisar - 4.1.6-8 +- Perl 5.18 rebuild + +* Wed Feb 13 2013 Fedora Release Engineering - 4.1.6-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Jul 19 2012 Fedora Release Engineering - 4.1.6-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Jan 13 2012 Fedora Release Engineering - 4.1.6-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + * Tue Feb 08 2011 Fedora Release Engineering - 4.1.6-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild diff --git a/giflib_coverity.patch b/giflib_coverity.patch new file mode 100644 index 0000000..acba905 --- /dev/null +++ b/giflib_coverity.patch @@ -0,0 +1,39 @@ +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 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) { + PrintGifError(Error); ++ free(OutputBuffer); ++ GifFreeMapObject(OutputColorMap); + exit(EXIT_FAILURE); + } + +@@ -173,6 +175,8 @@ static void SaveGif(GifByteType *OutputB + EGifPutImageDesc(GifFile, 0, 0, Width, Height, false, NULL) == + GIF_ERROR) { + PrintGifError(Error); ++ free(OutputBuffer); ++ GifFreeMapObject(OutputColorMap); + exit(EXIT_FAILURE); + } + +@@ -182,6 +186,8 @@ static void SaveGif(GifByteType *OutputB + + for (i = 0; i < Height; i++) { + if (EGifPutLine(GifFile, Ptr, Width) == GIF_ERROR) { ++ free(OutputBuffer); ++ GifFreeMapObject(OutputColorMap); + exit(EXIT_FAILURE); + } + GifQprintf("\b\b\b\b%-4d", Height - i - 1); +@@ -191,6 +197,8 @@ static void SaveGif(GifByteType *OutputB + + if (EGifCloseFile(GifFile, &Error) == GIF_ERROR) { + PrintGifError(Error); ++ free(OutputBuffer); ++ GifFreeMapObject(OutputColorMap); + exit(EXIT_FAILURE); + } + } diff --git a/giflib_html-docs-consistent-ids.patch b/giflib_html-docs-consistent-ids.patch new file mode 100644 index 0000000..ea3da5b --- /dev/null +++ b/giflib_html-docs-consistent-ids.patch @@ -0,0 +1,12 @@ +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 2025-04-15 16:56:27.252074979 +0200 +@@ -1,7 +1,7 @@ + .SUFFIXES: .xml .html .txt .adoc .1 .7 + + .xml.html: +- xmlto xhtml-nochunks $< ++ xmlto --stringparam generate.consistent.ids=1 xhtml-nochunks $< + + .xml.1: + xmlto man $< diff --git a/giflib_quantize.patch b/giflib_quantize.patch new file mode 100644 index 0000000..66c48e0 --- /dev/null +++ b/giflib_quantize.patch @@ -0,0 +1,17 @@ +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 2025-04-15 16:56:27.204960961 +0200 +@@ -29,11 +29,11 @@ LIBPOINT=0 + LIBVER=$(LIBMAJOR).$(LIBMINOR).$(LIBPOINT) + + SOURCES = dgif_lib.c egif_lib.c gifalloc.c gif_err.c gif_font.c \ +- gif_hash.c openbsd-reallocarray.c ++ gif_hash.c openbsd-reallocarray.c quantize.c + HEADERS = gif_hash.h gif_lib.h gif_lib_private.h + OBJECTS = $(SOURCES:.c=.o) + +-USOURCES = qprintf.c quantize.c getarg.c ++USOURCES = qprintf.c getarg.c + UHEADERS = getarg.h + UOBJECTS = $(USOURCES:.c=.o) + diff --git a/sources b/sources index c66eb81..67868a9 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -7125644155ae6ad33dbc9fc15a14735f giflib-4.1.6.tar.bz2 +SHA512 (giflib-5.2.2.tar.gz) = 0865ab2b1904fa14640c655fdb14bb54244ad18a66e358565c00287875d00912343f9be8bfac7658cc0146200d626f7ec9160d7a339f20ba3be6b9941d73975f