<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to patches</title><link>https://sourceforge.net/p/giflib/patches/</link><description>Recent changes to patches</description><atom:link href="https://sourceforge.net/p/giflib/patches/feed.rss" rel="self"/><language>en</language><lastBuildDate>Mon, 06 Apr 2026 18:33:52 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/giflib/patches/feed.rss" rel="self" type="application/rss+xml"/><item><title>Comprehensive integer overflow prevention and security hardening</title><link>https://sourceforge.net/p/giflib/patches/37/</link><description>&lt;div class="markdown_content"&gt;&lt;h2 id="h-summary"&gt;Summary&lt;/h2&gt;
&lt;p&gt;This patch fixes 4 integer overflow vulnerabilities in giflib's core library and adds security testing infrastructure (sanitizer build targets + libFuzzer harness).&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-bug-1-signed-integer-overflow-in-gifapplytranslation-gifallocc214"&gt;Bug 1: Signed integer overflow in &lt;code&gt;GifApplyTranslation&lt;/code&gt; (&lt;code&gt;gifalloc.c:214&lt;/code&gt;)&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Height * Width&lt;/code&gt; is computed as &lt;code&gt;int&lt;/code&gt; (signed 32-bit). For images where the product exceeds &lt;code&gt;INT_MAX&lt;/code&gt;, this is undefined behavior per C99 §6.5/5.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UBSan trace on unpatched giflib 6.1.2:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nx"&gt;gifalloc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;214&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;runtime&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;signed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;integer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="mi"&gt;46341&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;46341&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cannot&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;be&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;represented&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="nx"&gt;int&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The loop bound &lt;code&gt;RasterSize&lt;/code&gt; gets an unpredictable value due to UB, corrupting pixel translation. Fixed by using &lt;code&gt;size_t&lt;/code&gt; with a new &lt;code&gt;GifSafeMult()&lt;/code&gt; overflow-checked multiplication helper.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-bug-2-heap-buffer-overflow-in-gifmakesavedimage-gifallocc372-384"&gt;Bug 2: Heap buffer overflow in &lt;code&gt;GifMakeSavedImage&lt;/code&gt; (&lt;code&gt;gifalloc.c:372-384&lt;/code&gt;)&lt;/h2&gt;
&lt;p&gt;Two independent overflow sites in the same function:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;reallocarray(NULL, (Height * Width), sizeof(GifPixelType))&lt;/code&gt; — the &lt;code&gt;Height * Width&lt;/code&gt; multiplication happens in &lt;code&gt;int&lt;/code&gt; arithmetic before being passed to &lt;code&gt;reallocarray&lt;/code&gt;, defeating its overflow protection entirely. The overflowed &lt;code&gt;int&lt;/code&gt; is implicitly converted to &lt;code&gt;size_t&lt;/code&gt;, producing a wrong allocation size.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;memcpy(dst, src, sizeof(GifPixelType) * Height * Width)&lt;/code&gt; — computes the copy size independently, also in &lt;code&gt;int&lt;/code&gt; arithmetic. The &lt;code&gt;memcpy&lt;/code&gt; size does not match the allocation size — on overflow, &lt;code&gt;memcpy&lt;/code&gt; writes past the allocated buffer → heap buffer overflow.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Fixed by computing the size once with &lt;code&gt;GifSafeMult()&lt;/code&gt; and using it for both allocation and copy. On overflow, the function returns &lt;code&gt;NULL&lt;/code&gt; instead of allocating a wrong-sized buffer.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-bug-3-pixelcount-overflow-on-32-bit-systems-dgif_libc418-egif_libc451"&gt;Bug 3: &lt;code&gt;PixelCount&lt;/code&gt; overflow on 32-bit systems (&lt;code&gt;dgif_lib.c:418&lt;/code&gt;, &lt;code&gt;egif_lib.c:451&lt;/code&gt;)&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;(long)Width * (long)Height&lt;/code&gt; overflows signed &lt;code&gt;long&lt;/code&gt; on 32-bit platforms where &lt;code&gt;long&lt;/code&gt; is 32 bits. For example: 65535 × 65535 = 4,294,836,225 &amp;gt; &lt;code&gt;LONG_MAX&lt;/code&gt; (2,147,483,647) on 32-bit.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PixelCount&lt;/code&gt; gets a wrong value, causing the decoder/encoder to process the wrong number of pixels. Fixed by casting to &lt;code&gt;size_t&lt;/code&gt; and changing the &lt;code&gt;PixelCount&lt;/code&gt; field type from &lt;code&gt;unsigned long&lt;/code&gt; to &lt;code&gt;size_t&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;code&gt;PixelCount&lt;/code&gt; is in &lt;code&gt;GifFilePrivateType&lt;/code&gt; (private header &lt;code&gt;gif_lib_private.h&lt;/code&gt;), not the public API. Users access it through &lt;code&gt;void *Private&lt;/code&gt; in &lt;code&gt;GifFileType&lt;/code&gt;. This is &lt;strong&gt;not&lt;/strong&gt; an ABI break.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr/&gt;
&lt;h2 id="h-bug-4-unsafe-allocation-in-quantizec"&gt;Bug 4: Unsafe allocation in &lt;code&gt;quantize.c&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;malloc(sizeof(QuantizedColorType *) * NumEntries)&lt;/code&gt; replaced with &lt;code&gt;reallocarray(NULL, NumEntries, sizeof(QuantizedColorType *))&lt;/code&gt; for consistent overflow-safe allocation.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-security-infrastructure-added"&gt;Security Infrastructure Added&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GifSafeMult()&lt;/code&gt; — overflow-checked &lt;code&gt;size_t&lt;/code&gt; multiplication helper in &lt;code&gt;gif_lib_private.h&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Sanitizer Makefile targets: &lt;code&gt;make check-asan&lt;/code&gt;, &lt;code&gt;make check-ubsan&lt;/code&gt;, &lt;code&gt;make check-sanitizers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;libFuzzer harness: &lt;code&gt;fuzz/gif_fuzz_dgif.c&lt;/code&gt; for the &lt;code&gt;DGifSlurp&lt;/code&gt; decode path&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;h2 id="h-testing"&gt;Testing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;All 51 existing tests pass (normal build)&lt;/li&gt;
&lt;li&gt;All 51 tests pass under UBSan — zero undefined behavior errors&lt;/li&gt;
&lt;li&gt;All 51 tests pass under ASan — zero memory errors&lt;/li&gt;
&lt;li&gt;Fuzz harness runs clean at ~5000 exec/s with 165 edge coverage&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;h2 id="h-files-changed"&gt;Files Changed&lt;/h2&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nf"&gt;Makefile&lt;/span&gt;&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;changes&lt;/span&gt;
&lt;span class="nf"&gt;dgif_lib.c&lt;/span&gt;&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;changes&lt;/span&gt;
&lt;span class="nf"&gt;egif_lib.c&lt;/span&gt;&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;changes&lt;/span&gt;
&lt;span class="nf"&gt;gif_lib_private.h&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;changes&lt;/span&gt;
&lt;span class="nf"&gt;gifalloc.c&lt;/span&gt;&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;41&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;changes&lt;/span&gt;
&lt;span class="nf"&gt;quantize.c&lt;/span&gt;&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;changes&lt;/span&gt;
&lt;span class="nf"&gt;fuzz&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="no"&gt;gif_fuzz_dgif.c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;63&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;lines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="na"&gt;.gitignore&lt;/span&gt;&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;lines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Patch attached. Apply with:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;git&lt;span class="w"&gt; &lt;/span&gt;am&lt;span class="w"&gt; &lt;/span&gt;giflib-security-hardening.patch
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohammad Seet</dc:creator><pubDate>Mon, 06 Apr 2026 18:33:52 -0000</pubDate><guid>https://sourceforge.net54f854f6b790217d0cf04b2457e2272867119b40</guid></item><item><title>Fix signed integer overflow and memory leak in gifbuild.c</title><link>https://sourceforge.net/p/giflib/patches/36/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;gifbuild.c currently accepts signed integer for Image dimensions, thus negative integers as a result cause a buffer overflow when they are cast to &lt;code&gt;size_t&lt;/code&gt;. To prevent this, an integer check is implemented before malloc that checks if dimensions go into negative and if that is the case, the code immediately stops and cleans up any leftover data to prevent data leaks.&lt;/p&gt;
&lt;p&gt;Fixes Bug #186&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeffin Philip</dc:creator><pubDate>Wed, 18 Feb 2026 12:33:09 -0000</pubDate><guid>https://sourceforge.net25918e07ca8709358139719869895107c22a674c</guid></item><item><title>Patch buffer overrun revealed by FORTIFY_SOURCE</title><link>https://sourceforge.net/p/giflib/patches/34/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;During a build of &lt;code&gt;giflib&lt;/code&gt;, the below issue was reported at build time. Attached patch should fix the issue based on compiler hints.&lt;/p&gt;
&lt;p&gt;giflib: Patch buffer overrun revealed by FORTIFY_SOURCE&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gd"&gt;--- a/giftext.c 2025-01-09 20:54:01.061791223 +0000&lt;/span&gt;
&lt;span class="gi"&gt;+++ b/giftext.c 2025-01-09 21:04:39.525735979 +0000&lt;/span&gt;
&lt;span class="gu"&gt;@@ -418,7 +418,7 @@&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;static void PrintExtBlock(GifByteType *Extension, bool Reset) {
&lt;span class="w"&gt; &lt;/span&gt;             static int CrntPlace = 0;
&lt;span class="w"&gt; &lt;/span&gt;             static long ExtCount = 0;
&lt;span class="gd"&gt;-             static char HexForm[49], AsciiForm[17];&lt;/span&gt;
&lt;span class="gi"&gt;+             static char HexForm[49], AsciiForm[18];&lt;/span&gt;

&lt;span class="w"&gt; &lt;/span&gt;             if (Reset || Extension == NULL) {
&lt;span class="w"&gt; &lt;/span&gt;                      if (Extension == NULL) {
&lt;span class="gu"&gt;@@ -464,7 +464,7 @@&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;static void PrintPixelBlock(GifByteType *PixelBlock, int Len, bool Reset) {
&lt;span class="w"&gt; &lt;/span&gt;             static int CrntPlace = 0;
&lt;span class="w"&gt; &lt;/span&gt;             static long ExtCount = 0;
&lt;span class="gd"&gt;-             static char HexForm[49], AsciiForm[17];&lt;/span&gt;
&lt;span class="gi"&gt;+             static char HexForm[49], AsciiForm[18];&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;             int i;

&lt;span class="w"&gt; &lt;/span&gt;             if (Reset || PixelBlock == NULL) {
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ritesh Raj Sarraf</dc:creator><pubDate>Wed, 21 May 2025 13:27:08 -0000</pubDate><guid>https://sourceforge.net18ea2e7d78f615ffe6027ec40efcd11f326cc339</guid></item><item><title>#33 Race-Condition on Install</title><link>https://sourceforge.net/p/giflib/patches/33/?limit=25#4934</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Prio is not 1 but very low. I failed to set it correctly.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Sebastian Koerner</dc:creator><pubDate>Wed, 29 May 2024 08:56:14 -0000</pubDate><guid>https://sourceforge.netfafae69f258832a2665c902c760d8dd81bb0a60e</guid></item><item><title>Race-Condition on Install</title><link>https://sourceforge.net/p/giflib/patches/33/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Running make install with -j &amp;gt;1 might cause a  race-condition:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;path&amp;gt;/giflib-build/giflib-5.2.2-install/bin"&lt;/span&gt;
&lt;span class="n"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;path&amp;gt;/giflib-build/giflib-5.2.2-install/include"&lt;/span&gt;
&lt;span class="n"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;path&amp;gt;/giflib-build/giflib-5.2.2-install/lib"&lt;/span&gt;
&lt;span class="n"&gt;install&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;644&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gif_lib&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;path&amp;gt;/giflib-build/giflib-5.2.2-install/include"&lt;/span&gt;
&lt;span class="n"&gt;mkdir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;/&lt;/span&gt;&lt;span class="n"&gt;giflib&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;giflib&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;5.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;install&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;File&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;exists&lt;/span&gt;
&lt;span class="n"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gif2rgb&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gifbuild&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;giffix&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;giftext&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;giftool&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gifclrmp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;path&amp;gt;/giflib-build/giflib-5.2.2-install/bin"&lt;/span&gt;
&lt;span class="n"&gt;make&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;***&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;install&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;71&lt;/span&gt;
&lt;span class="n"&gt;make&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;***&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Waiting&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;unfinished&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;jobs&lt;/span&gt;&lt;span class="o"&gt;....&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Simplest patch&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gd"&gt;--- giflib-5.2.2/Makefile.org&lt;/span&gt;
&lt;span class="gi"&gt;+++ giflib-5.2.2/Makefile&lt;/span&gt;
&lt;span class="gu"&gt;@@ -129,6 +129,8 @@&lt;/span&gt;

&lt;span class="w"&gt; &lt;/span&gt;# Installation/uninstallation

&lt;span class="gi"&gt;+&lt;/span&gt;
&lt;span class="gi"&gt;+.NOTPARALLEL: install-bin install-include install-lib install-man&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;ifeq ($(UNAME), Darwin)
&lt;span class="w"&gt; &lt;/span&gt;install: all install-bin install-include install-lib
&lt;span class="w"&gt; &lt;/span&gt;else
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Sebastian Koerner</dc:creator><pubDate>Wed, 29 May 2024 08:55:03 -0000</pubDate><guid>https://sourceforge.neta7dacfcf7edc46f8aef781544a5b01613eb66d49</guid></item><item><title>#31 Wrong position of gif version mark</title><link>https://sourceforge.net/p/giflib/patches/31/?limit=25#af8b</link><description>&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;status&lt;/strong&gt;: open --&amp;gt; closed&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Eric S. Raymond</dc:creator><pubDate>Sun, 18 Feb 2024 19:07:38 -0000</pubDate><guid>https://sourceforge.net2af31041eb01fab3a4d4c6ca7f8c24163932b0ff</guid></item><item><title>#31 Wrong position of gif version mark</title><link>https://sourceforge.net/p/giflib/patches/31/?limit=25#1211</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Applied, thanks.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Eric S. Raymond</dc:creator><pubDate>Sun, 18 Feb 2024 19:07:25 -0000</pubDate><guid>https://sourceforge.netbcc94014b6d051c10b3962bfb6fc2ce8d40e843f</guid></item><item><title>#32 Fix of spoilt image counter</title><link>https://sourceforge.net/p/giflib/patches/32/?limit=25#b90c</link><description>&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;status&lt;/strong&gt;: open --&amp;gt; closed&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Eric S. Raymond</dc:creator><pubDate>Sun, 18 Feb 2024 13:25:04 -0000</pubDate><guid>https://sourceforge.neta7c680e88d169ce5f0ea9ccef678991c94e41ada</guid></item><item><title>#32 Fix of spoilt image counter</title><link>https://sourceforge.net/p/giflib/patches/32/?limit=25#17b4</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Applied, thanks.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Eric S. Raymond</dc:creator><pubDate>Sun, 18 Feb 2024 13:24:50 -0000</pubDate><guid>https://sourceforge.net186382af292a0fb8f03b8e8705ba42cefcb8ca1d</guid></item><item><title>#32 Fix of spoilt image counter</title><link>https://sourceforge.net/p/giflib/patches/32/?limit=25#e2d0</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Better use this&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Kobrin Eli</dc:creator><pubDate>Wed, 04 Oct 2023 10:14:26 -0000</pubDate><guid>https://sourceforge.neta5de3a766bf9bc4809c3d6a8ae42e0db42d75c90</guid></item></channel></rss>