<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent changes to patches</title><link href="https://sourceforge.net/p/giflib/patches/" rel="alternate"/><link href="https://sourceforge.net/p/giflib/patches/feed.atom" rel="self"/><id>https://sourceforge.net/p/giflib/patches/</id><updated>2026-04-06T18:33:52.950000Z</updated><subtitle>Recent changes to patches</subtitle><entry><title>Comprehensive integer overflow prevention and security hardening</title><link href="https://sourceforge.net/p/giflib/patches/37/" rel="alternate"/><published>2026-04-06T18:33:52.950000Z</published><updated>2026-04-06T18:33:52.950000Z</updated><author><name>Mohammad Seet</name><uri>https://sourceforge.net/u/mohammadseet/</uri></author><id>https://sourceforge.net54f854f6b790217d0cf04b2457e2272867119b40</id><summary type="html">&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;</summary></entry><entry><title>Fix signed integer overflow and memory leak in gifbuild.c</title><link href="https://sourceforge.net/p/giflib/patches/36/" rel="alternate"/><published>2026-02-18T12:33:09.130000Z</published><updated>2026-02-18T12:33:09.130000Z</updated><author><name>Jeffin Philip</name><uri>https://sourceforge.net/u/d3f4ult/</uri></author><id>https://sourceforge.net25918e07ca8709358139719869895107c22a674c</id><summary type="html">&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;</summary></entry><entry><title>Patch buffer overrun revealed by FORTIFY_SOURCE</title><link href="https://sourceforge.net/p/giflib/patches/34/" rel="alternate"/><published>2025-05-21T13:27:08.288000Z</published><updated>2025-05-21T13:27:08.288000Z</updated><author><name>Ritesh Raj Sarraf</name><uri>https://sourceforge.net/u/riteshsarraf/</uri></author><id>https://sourceforge.net18ea2e7d78f615ffe6027ec40efcd11f326cc339</id><summary type="html">&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;</summary></entry><entry><title>#33 Race-Condition on Install</title><link href="https://sourceforge.net/p/giflib/patches/33/?limit=25#4934" rel="alternate"/><published>2024-05-29T08:56:14.938000Z</published><updated>2024-05-29T08:56:14.938000Z</updated><author><name>Sebastian Koerner</name><uri>https://sourceforge.net/u/sebastiankoerne/</uri></author><id>https://sourceforge.netfafae69f258832a2665c902c760d8dd81bb0a60e</id><summary type="html">&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;</summary></entry><entry><title>Race-Condition on Install</title><link href="https://sourceforge.net/p/giflib/patches/33/" rel="alternate"/><published>2024-05-29T08:55:03.052000Z</published><updated>2024-05-29T08:55:03.052000Z</updated><author><name>Sebastian Koerner</name><uri>https://sourceforge.net/u/sebastiankoerne/</uri></author><id>https://sourceforge.neta7dacfcf7edc46f8aef781544a5b01613eb66d49</id><summary type="html">&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;</summary></entry><entry><title>#31 Wrong position of gif version mark</title><link href="https://sourceforge.net/p/giflib/patches/31/?limit=25#af8b" rel="alternate"/><published>2024-02-18T19:07:38.810000Z</published><updated>2024-02-18T19:07:38.810000Z</updated><author><name>Eric S. Raymond</name><uri>https://sourceforge.net/u/esr/</uri></author><id>https://sourceforge.net2af31041eb01fab3a4d4c6ca7f8c24163932b0ff</id><summary type="html">&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;</summary></entry><entry><title>#31 Wrong position of gif version mark</title><link href="https://sourceforge.net/p/giflib/patches/31/?limit=25#1211" rel="alternate"/><published>2024-02-18T19:07:25.827000Z</published><updated>2024-02-18T19:07:25.827000Z</updated><author><name>Eric S. Raymond</name><uri>https://sourceforge.net/u/esr/</uri></author><id>https://sourceforge.netbcc94014b6d051c10b3962bfb6fc2ce8d40e843f</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Applied, thanks.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>#32 Fix of spoilt image counter</title><link href="https://sourceforge.net/p/giflib/patches/32/?limit=25#b90c" rel="alternate"/><published>2024-02-18T13:25:04.745000Z</published><updated>2024-02-18T13:25:04.745000Z</updated><author><name>Eric S. Raymond</name><uri>https://sourceforge.net/u/esr/</uri></author><id>https://sourceforge.neta7c680e88d169ce5f0ea9ccef678991c94e41ada</id><summary type="html">&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;</summary></entry><entry><title>#32 Fix of spoilt image counter</title><link href="https://sourceforge.net/p/giflib/patches/32/?limit=25#17b4" rel="alternate"/><published>2024-02-18T13:24:50.538000Z</published><updated>2024-02-18T13:24:50.538000Z</updated><author><name>Eric S. Raymond</name><uri>https://sourceforge.net/u/esr/</uri></author><id>https://sourceforge.net186382af292a0fb8f03b8e8705ba42cefcb8ca1d</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Applied, thanks.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>#32 Fix of spoilt image counter</title><link href="https://sourceforge.net/p/giflib/patches/32/?limit=25#e2d0" rel="alternate"/><published>2023-10-04T10:14:26.260000Z</published><updated>2023-10-04T10:14:26.260000Z</updated><author><name>Kobrin Eli</name><uri>https://sourceforge.net/u/kobrineli/</uri></author><id>https://sourceforge.neta5de3a766bf9bc4809c3d6a8ae42e0db42d75c90</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Better use this&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>