Compare commits

..

2 commits

Author SHA1 Message Date
Fedora Release Engineering
bf8e6164cf dist-git conversion 2010-07-28 15:38:04 +00:00
Bill Nottingham
65e36fa6c2 Initialize branch F-7 for giflib 2007-05-18 04:12:56 +00:00
10 changed files with 169 additions and 845 deletions

9
.gitignore vendored
View file

@ -1,8 +1 @@
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
giflib-4.1.3.tar.bz2

View file

@ -1,142 +0,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")
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]
)

View file

@ -1,308 +0,0 @@
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 <stdlib.h>
#include <string.h>
-#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 <stdbool.h>
-
-#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 <io.h>
#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 <stdlib.h>
#include <string.h>
-#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 <stdlib.h>
#include <string.h>
-#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 <stdlib.h>
#include <string.h>
-#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 <stdlib.h>
#include <string.h>
-#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 <stdlib.h>
#include <string.h>
-#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 <stdlib.h>
#include <string.h>
-#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 <stdlib.h>
#include <string.h>
-#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 <stdbool.h>
+
+#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 <stdlib.h>
#include <string.h>
-#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 <unistd.h>
#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 <stdlib.h>
#include <string.h>
-#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 <io.h>
#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 <stdlib.h>
#include <string.h>
-#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 <stdlib.h>
#include <string.h>
-#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)

View file

@ -1,15 +0,0 @@
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;

96
giflib-hash64.patch Normal file
View file

@ -0,0 +1,96 @@
--- giflib-4.1.3/lib/gif_hash.c.64 2005-09-20 13:39:32.000000000 -0700
+++ giflib-4.1.3/lib/gif_hash.c 2005-09-20 13:41:40.000000000 -0700
@@ -45,7 +45,7 @@
NumberOfMisses = 0;
#endif /* DEBUG_HIT_RATE */
-static int KeyItem(unsigned long Item);
+static int KeyItem(unsigned int Item);
/******************************************************************************
* Initialize HashTable - allocate the memory needed and clear it. *
@@ -69,17 +69,17 @@
******************************************************************************/
void _ClearHashTable(GifHashTableType *HashTable)
{
- memset(HashTable -> HTable, 0xFF, HT_SIZE * sizeof(long));
+ memset(HashTable -> HTable, 0xFF, HT_SIZE * sizeof(int));
}
/******************************************************************************
* Routine to insert a new Item into the HashTable. The data is assumed to be *
* new one. *
******************************************************************************/
-void _InsertHashTable(GifHashTableType *HashTable, unsigned long Key, int Code)
+void _InsertHashTable(GifHashTableType *HashTable, unsigned int Key, int Code)
{
int HKey = KeyItem(Key);
- unsigned long *HTable = HashTable -> HTable;
+ unsigned int *HTable = HashTable -> HTable;
#ifdef DEBUG_HIT_RATE
NumberOfTests++;
@@ -99,10 +99,10 @@
* Routine to test if given Key exists in HashTable and if so returns its code *
* Returns the Code if key was found, -1 if not. *
******************************************************************************/
-int _ExistsHashTable(GifHashTableType *HashTable, unsigned long Key)
+int _ExistsHashTable(GifHashTableType *HashTable, unsigned int Key)
{
int HKey = KeyItem(Key);
- unsigned long *HTable = HashTable -> HTable, HTKey;
+ unsigned int *HTable = HashTable -> HTable, HTKey;
#ifdef DEBUG_HIT_RATE
NumberOfTests++;
@@ -127,7 +127,7 @@
* Because the average hit ratio is only 2 (2 hash references per entry), *
* evaluating more complex keys (such as twin prime keys) does not worth it! *
******************************************************************************/
-static int KeyItem(unsigned long Item)
+static int KeyItem(unsigned int Item)
{
return ((Item >> 12) ^ Item) & HT_KEY_MASK;
}
--- giflib-4.1.3/lib/gif_hash.h.64 2005-09-20 13:39:42.000000000 -0700
+++ giflib-4.1.3/lib/gif_hash.h 2005-09-20 13:42:08.000000000 -0700
@@ -25,12 +25,12 @@
#define HT_PUT_CODE(l) (l & 0x0FFF)
typedef struct GifHashTableType {
- unsigned long HTable[HT_SIZE];
+ unsigned int HTable[HT_SIZE];
} GifHashTableType;
GifHashTableType *_InitHashTable(void);
void _ClearHashTable(GifHashTableType *HashTable);
-void _InsertHashTable(GifHashTableType *HashTable, unsigned long Key, int Code);
-int _ExistsHashTable(GifHashTableType *HashTable, unsigned long Key);
+void _InsertHashTable(GifHashTableType *HashTable, unsigned int Key, int Code);
+int _ExistsHashTable(GifHashTableType *HashTable, unsigned int Key);
#endif /* _GIF_HASH_H_ */
--- giflib-4.1.3/lib/egif_lib.c.64 2005-09-20 13:45:28.000000000 -0700
+++ giflib-4.1.3/lib/egif_lib.c 2005-09-20 13:43:39.000000000 -0700
@@ -188,6 +188,12 @@
_GifError = E_GIF_ERR_NOT_ENOUGH_MEM;
return NULL;
}
+ if ((Private->HashTable = _InitHashTable()) == NULL) {
+ free(GifFile);
+ free(Private);
+ _GifError = E_GIF_ERR_NOT_ENOUGH_MEM;
+ return NULL;
+ }
GifFile->Private = (VoidPtr) Private;
Private->FileHandle = 0;
@@ -832,7 +838,7 @@
/* Form a new unique key to search hash table for the code combines
* CrntCode as Prefix string with Pixel as postfix char.
*/
- NewKey = (((unsigned long) CrntCode) << 8) + Pixel;
+ NewKey = (((unsigned int) CrntCode) << 8) + Pixel;
if ((NewCode = _ExistsHashTable(HashTable, NewKey)) >= 0) {
/* This Key is already there, or the string is old one, so
* simple take new code as our CrntCode:

View file

@ -1,337 +1,105 @@
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
Summary: Library for manipulating GIF format image files
Name: giflib
Version: 4.1.3
Release: 8
License: MIT
URL: http://www.sf.net/projects/libungif/
Source0: http://dl.sf.net/libungif/%{name}-%{version}.tar.bz2
Patch0: giflib-hash64.patch
Group: System Environment/Libraries
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: libX11-devel, libICE-devel, libSM-devel, libXt-devel
Obsoletes: libungif <= %{version}-%{release}
Provides: libungif <= %{version}-%{release}
%description
giflib is a library for reading and writing gif images.
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.
Install the giflib package if you need to write programs that use GIF files.
You should also install the giflib-utils package if you need some simple
utilities to manipulate GIFs.
%package devel
Summary: Development files for programs using the giflib library
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: Development tools for programs which will use the libungif library
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Provides: libungif-devel <= %{version}-%{release}
Obsoletes: libungif-devel <= %{version}-%{release}
%description devel
The giflib-devel package includes header files, libraries necessary for
developing programs which use the giflib library.
This package contains the static libraries, header files and
documentation necessary for development of programs that will use the
giflib library to load and save GIF format image files.
You should install this package if you need to develop programs which
will use giflib library functions. You'll also need to install the
giflib package.
%package utils
Summary: Programs for manipulating GIF format image files
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: Programs for manipulating GIF format image files
Group: Applications/Multimedia
Requires: %{name} = %{version}-%{release}
Obsoletes: libungif-progs <= %{version}-%{release}
%description utils
The giflib-utils package contains various programs for manipulating GIF
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}
The giflib-utils package contains various programs for manipulating
GIF format image files.
Install this package if you need to manipulate GIF format image files.
You'll also need to install the giflib package.
%prep
%autosetup -p1
cp -a %{SOURCE1} .
%setup -q
%patch0 -p1 -b .amd64
%{__sed} -i 's/\r//' doc/lzgif.txt
%build
# Native build
%cmake
%cmake_build
# MinGW build
%mingw_cmake
%mingw_make_build
%configure
make %{?_smp_mflags} all
MAJOR=`echo '%{version}' | sed 's/\([0-9]\+\)\..*/\1/'`
%{__cc} $RPM_OPT_FLAGS -shared -Wl,-soname,libungif.so.$MAJOR -Llib/.libs -lgif -o libungif.so.%{version}
%install
%cmake_install
%mingw_make_install
rm -rf %{buildroot}%{mingw32_mandir}
rm -rf %{buildroot}%{mingw64_mandir}
rm -rf ${RPM_BUILD_ROOT}
make install DESTDIR=$RPM_BUILD_ROOT
%mingw_debug_install_post
install -m 0755 -p 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
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
%files
%doc ChangeLog NEWS README
%license COPYING
%{_libdir}/libgif.so.7*
%clean
rm -rf ${RPM_BUILD_ROOT}
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%defattr(-,root,root,-)
%doc COPYING README NEWS ONEWS
%doc ChangeLog TODO BUGS AUTHORS
%{_libdir}/lib*.so.*
%files devel
%doc doc/*
%{_libdir}/libgif.so
%{_includedir}/gif_lib.h
%{_includedir}/gif_getarg.h
%defattr(-,root,root,-)
%doc doc/* util/giffiltr.c util/gifspnge.c
%{_libdir}/lib*.a
%{_libdir}/lib*.so
%{_includedir}/*.h
%files utils
%{_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
%defattr(-,root,root,-)
%{_bindir}/*
%changelog
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.2-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Wed Jul 16 2025 Sandro Mani <manisandro@gmail.com> - 5.2.2-7
- Increase minimum cmake version to 3.5
- Use GnuInstallDirs
* Tue Apr 15 2025 Sandro Mani <manisandro@gmail.com> - 5.2.2-6
- Add proposed patch for CVE-2025-31334
* Wed Apr 02 2025 Benson Muite <fed500@fedoraproject.org> - 5.2.2-5
- Rename getarg.h to gif_getarg.h
* Wed Apr 02 2025 Benson Muite <fed500@fedoraproject.org> - 5.2.2-4
- Install getarg.h header file
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Mon Feb 19 2024 Sandro Mani <manisandro@gmail.com> - 5.2.2-1
- Update to 5.2.2
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.1-19
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.1-18
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Thu Sep 14 2023 Sandro Mani <manisandro@gmail.com> - 5.2.1-17
- Add patch for CVE-2023-39742
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.1-16
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.1-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Thu Jul 21 2022 Sandro Mani <manisandro@gmail.com> - 5.2.1-14
- Backport fix for CVE-2022-28506
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.1-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Fri Mar 25 2022 Sandro Mani <manisandro@gmail.com> - 5.2.1-12
- Rebuild with mingw-gcc-12
* Thu Feb 24 2022 Sandro Mani <manisandro@gmail.com> - 5.2.1-11
- Make mingw subpackages noarch
* Sat Feb 19 2022 Sandro Mani <manisandro@gmail.com> - 5.2.1-10
- Add mingw subpackage
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.1-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.1-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.1-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Feb 17 2020 Sandro Mani <manisandro@gmail.com> - 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 <releng@fedoraproject.org> - 5.2.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Tue Oct 01 2019 Sandro Mani <manisandro@gmail.com> - 5.2.1-3
- Move quantize.c back into libgif.so (#1750122)
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Fri Jun 28 2019 Sandro Mani <manisandro@gmail.com> - 5.2.1-1
- Update to 5.2.1
* Mon Apr 01 2019 Sandro Mani <manisandro@gmail.com> - 5.1.9-1
- Update to 5.1.9
* Wed Mar 20 2019 Sandro Mani <manisandro@gmail.com> - 5.1.8-1
- Update to 5.1.8
* Mon Mar 11 2019 Sandro Mani <manisandro@gmail.com> - 5.1.7-1
- Update to 5.1.7
* Sat Feb 23 2019 Sandro Mani <manisandro@gmail.com> - 5.1.6-2
- Fix broken soname
* Mon Feb 18 2019 Sandro Mani <manisandro@gmail.com> - 5.1.6-1
- Update to 5.1.6
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 5.1.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 5.1.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Sun Feb 11 2018 Sandro Mani <manisandro@gmail.com> - 5.1.4-1
- Update to 5.1.4
* Thu Feb 8 2018 Florian Weimer <fweimer@redhat.com> - 4.1.6-22
- Build libungif with linker flags from redhat-rpm-config
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.1.6-21
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Sat Feb 03 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 4.1.6-20
- Switch to %%ldconfig_scriptlets
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 4.1.6-19
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 4.1.6-18
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Wed Mar 29 2017 Stephen Gallagher <sgallagh@redhat.com> - 4.1.6-17
- Fix compilation errors when -Werror=format-security
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 4.1.6-16
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 4.1.6-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Fri Aug 14 2015 Adam Jackson <ajax@redhat.com> 4.1.6-14
- Link libungif with -z now too
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1.6-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1.6-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1.6-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Wed Dec 18 2013 Peter Robinson <pbrobinson@fedoraproject.org> 4.1.6-10
- Rebuild
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1.6-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Wed Jul 17 2013 Petr Pisar <ppisar@redhat.com> - 4.1.6-8
- Perl 5.18 rebuild
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1.6-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1.6-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1.6-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1.6-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1.6-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Sat May 09 2009 Robert Scheck <robert@fedoraproject.org> 4.1.6-2
- Solved multilib problems with documentation (#465208, #474538)
- Removed static library from giflib-devel package (#225796 #c1)
* Mon Apr 13 2009 Tom "spot" Callaway <tcallawa@redhat.com> - 4.1.6-1
- update to 4.1.6
* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1.3-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Tue Feb 19 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 4.1.3-9
- Autorebuild for GCC 4.3
* Tue Mar 13 2007 Karsten Hopp <karsten@redhat.com> 4.1.3-8
- add BR libXt-devel, otherwise X support will be disabled

View file

@ -1,39 +0,0 @@
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);
}
}

View file

@ -1,12 +0,0 @@
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 $<

View file

@ -1,17 +0,0 @@
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)

View file

@ -1 +1 @@
SHA512 (giflib-5.2.2.tar.gz) = 0865ab2b1904fa14640c655fdb14bb54244ad18a66e358565c00287875d00912343f9be8bfac7658cc0146200d626f7ec9160d7a339f20ba3be6b9941d73975f
22efc9599ccf91d288374dcf0679abf1 giflib-4.1.3.tar.bz2