| GIFLIB NEWS |
| |
| Repository head |
| =============== |
| |
| This is a point release intended to clear up a couple of CVEs and |
| apply point fixes that have been accumulating since 5.2.1 There are a |
| few unresolved (but minor) memory leaks related to design issues in |
| the API that still need to be resolved. |
| |
| Code Fixes |
| ---------- |
| |
| * Fixes for CVE-2023-48161, CVE-2022-28506, |
| |
| * Address SF issue #138 Documentation for obsolete utilities still installed |
| |
| * Address SF issue #139: Typo in "LZW image data" page ("110_2 = 4_10") |
| |
| * Address SF issue #140: Typo in "LZW image data" page ("LWZ") |
| |
| * Address SF issue #141: Typo in "Bits and bytes" page ("filed") |
| |
| * Note as already fixed SF issue #143: cannot compile under mingw |
| |
| * Address SF issue #144: giflib-5.2.1 cannot be build on windows and other platforms using c89 |
| |
| * Address SF issue #145: Remove manual pages installation for binaries that are not installed too |
| |
| * Address SF issue #146: [PATCH] Limit installed man pages to binaries, move giflib to section 7 |
| |
| * Address SF issue #147 [PATCH] Fixes to doc/whatsinagif/ content |
| |
| * Address SF issue #148: heap Out of Bound Read in gif2rgb.c:298 DumpScreen2RGB |
| |
| * Declared no-info on SF issue #150: There is a denial of service vulnerability in GIFLIB 5.2.1 |
| |
| * Declared Won't-fix on SF issue 149: Out of source builds no longer possible |
| |
| * Address SF issue #151: A heap-buffer-overflow in gif2rgb.c:294:45 |
| |
| * Address SF issue #152: Fix some typos on the html documentation and man pages |
| |
| * Address SF issue #153: Fix segmentation faults due to non correct checking for args |
| |
| * Address SF issue #154: Recover the giffilter manual page |
| |
| * Address SF issue #155: Add gifsponge docs |
| |
| * Address SF issue #157: An OutofMemory-Exception or Memory Leak in gif2rgb |
| |
| * Address SF issue #158: There is a null pointer problem in gif2rgb |
| |
| * Address SF issue #159 A heap-buffer-overflow in GIFLIB5.2.1 DumpScreen2RGB() in gif2rgb.c:298:45 |
| |
| * Address SF issue #163: detected memory leaks in openbsd_reallocarray giflib/openbsd-reallocarray.c |
| |
| * Address SF issue #164: detected memory leaks in GifMakeMapObject giflib/gifalloc.c |
| |
| * Address SF issue #166: a read zero page leads segment fault in getarg.c and memory leaks in gif2rgb.c and gifmalloc.c |
| |
| * Address SF issue #167: Heap-Buffer Overflow during Image Saving in DumpScreen2RGB Function at Line 321 of gif2rgb.c |
| |
| Version 5.2.1 |
| ============== |
| |
| This is the "Maybe I shouldn't have done a release while in surgical recovery" release. |
| |
| * In gifbuild.c, avoid a core dump on no color map. |
| |
| * Restore inadvertently removed library version numbers in Makefile. |
| |
| Version 5.2.0 |
| ============= |
| |
| The undocumented and deprecated GifQuantizeBuffer() entry point |
| has been moved to the util library to reduce libgif size and attack |
| surface. Applications needing this function are couraged to link the |
| util library or make their own copy. |
| |
| The following obsolete utility programs are no longer installed: |
| gifecho, giffilter, gifinto, gifsponge. These were either installed in |
| error or have been obsolesced by modern image-transformation tools |
| like ImageMagick convert. They may be removed entirely in a future |
| release. |
| |
| * Address SourceForge issue #136: Stack-buffer-overflow in gifcolor.c:84 |
| |
| * Address SF bug #134: Giflib fails to slurp significant number of gifs |
| |
| * Apply SPDX convention for license tagging. |
| |
| Version 5.1.9 |
| ============= |
| |
| The documentation directory now includes an HTMlified version of the |
| GIF89 standard, and a more detailed description of how LZW compression |
| is applied to GIFs. |
| |
| * Address SF bug #129: The latest version of giflib cannot be build on windows. |
| |
| * Address SF bug #126: Cannot compile giflib using c89 |
| |
| Version 5.1.8 |
| ============= |
| |
| * Address SF bug #119: MemorySanitizer: FPE on unknown address. This is CVE-2019-15133 |
| |
| * Address SF bug #125: 5.1.7: xmlto is still required for tarball |
| |
| * Address SF bug #124: 5.1.7: ar invocation is not crosscompile compatible |
| |
| * Address SF bug #122: 5.1.7 installs manpages to wrong directory |
| |
| * Address SF bug #121: make: getversion: Command not found |
| |
| * Address SF bug #120: 5.1.7 does not build a proper library - no |
| |
| Version 5.1.7 |
| ============= |
| |
| Correct a minor packaging error (superfluous symlinks) in the 5.1.6 tarballs. |
| |
| Version 5.1.6 |
| ============= |
| |
| Build Fixes |
| ----------- |
| |
| Fix library installation in the Makefile. |
| |
| Version 5.1.5 |
| ============= |
| |
| Code Fixes |
| ---------- |
| |
| * Fix SF bug #114: Null dereferences in main() of gifclrmp |
| |
| * Fix SF bug #113: Heap Buffer Overflow-2 in function DGifDecompressLine() |
| in cgif.c. This had been assigned CVE-2018-11490. |
| |
| * Fix SF bug #111: segmentation fault in PrintCodeBlock |
| |
| * Fix SF bug #109: Segmentation fault of giftool reading a crafted file |
| |
| * Fix SF bug #107: Floating point exception in giftext utility |
| |
| * Fix SF bug #105: heap buffer overflow in DumpScreen2RGB in gif2rgb.c:317 |
| |
| * Fix SF bug #104: Ineffective bounds check in DGifSlurp |
| |
| ^ Fix SF bug #103: GIFLIB 5.1.4: DGifSlurp fails on empty comment |
| |
| * Fix SF bug #87: Heap buffer overflow in 5.1.2 (gif2rgb). |
| |
| Build Fixes |
| ----------- |
| |
| The horrible old autoconf build system has been removed with extreme prejudice. |
| You now build this simply by running "make" from the top-level directory. |
| |
| Version 5.1.4 |
| ============= |
| |
| Code Fixes |
| ---------- |
| |
| * Fix SF bug #94: giflib 5 loves to fail to load images... a LOT. |
| |
| * Fix SF Bug #92: Fix buffer overread in gifbuild. |
| |
| * Fix SF Bug #93: Add bounds check in gifbuild netscape2.0 path |
| |
| * Fix SF Bug #89: Fix buffer overread in gifbuild. |
| |
| Version 5.1.3 |
| ============= |
| |
| As of this version the library and code has been seriously abused by fuzzers, |
| smoking out crash bugs (now fixed) induced by various kinds of severely |
| malformed GIF. |
| |
| Code Fixes |
| ---------- |
| |
| * Prevent malloc randomess from causing the header output routine to emit |
| a GIF89 version string even when no GIF89 features are present. Only |
| breaks tests, not production code, but it's odd this wasn't caught sooner. |
| |
| * Prevent malloc randomess from producing sporadic failures by causing |
| sanity checks added in 5.1.2 to misfire. |
| |
| * Bulletproof gif2rgb against 0-height images. Addressed SF bug #78: |
| Heap overflow in gif2rgb with images of size 0, also SF bug #82. |
| |
| * Remove unnecessary duplicate EGifClose() in gifcolor.c. Fixes SF bug #83 |
| introduced in 5.1.2. |
| |
| * Fix SF Bug #84: incorrect return of DGifSlurp(). |
| |
| Version 5.1.2 |
| ============= |
| |
| Code Fixes |
| ---------- |
| |
| * Code hardening using reallocarray() from OpenBSD. |
| |
| * Sanity check in giffilter catches files with malformed extension records |
| Fixes SourceForge bug #63: malformed gif causes segfault in giffilter. |
| |
| * Inexpensive sanity check in DGifSlurp() catches malformed files with |
| no image descriptor. Fixes SourceForge bug #64: malformed gif causes |
| crash in giftool. |
| |
| * Fix SourceForge bug #66: GifDrawBoxedText8x8() modifying constant input |
| parameter. |
| |
| * Bail out of GIF read on invalid pixel width. Addresses Savannah bug |
| #67: invalid shift in dgif_lib.c |
| |
| * Fix SourceForge bug #69: #69 Malformed: Gif file with no extension |
| block after a GRAPHICS_EXT_FUNC_CODE extension causes segfault (in |
| giftext). |
| |
| * Fix SourceForge bug #71: Buffer overwrite when giffixing a malformed gif. |
| |
| * Fix SourceForge bug #73: Null pointer deference in gifclrmap (only |
| reachable with malformed GIF). |
| |
| * Fix SourceForge bug #74: Double free in gifsponge under 5.1.1, |
| for any valid gif image. |
| |
| * Fix SourceForge bug #75: GAGetArgs overflows due to uncounted use of va_arg. |
| |
| * Sanity check in giffix catches some malformed files. Addresses |
| SourceForge bug #77: dgif_lib.c: extension processing error |
| |
| |
| Version 5.1.1 |
| ============= |
| |
| Code Fixes |
| ---------- |
| |
| * Numerous minor fixes in getarg.c. Affects only the utilities, not the |
| core library. |
| |
| * Fix SourceForge bug #59: DGifOpen can segfault if DGifGetScreenDesc fails. |
| |
| * SourceForge patch #20: In gifalloc, fix usage of realloc() in case of failure. |
| |
| * Fix SourceForge bug #61 Leak in gifsponge. |
| |
| Build Fixes |
| ---------- |
| |
| * glibtoolize port fix for OS X. |
| |
| Version 5.1.0 |
| ============= |
| |
| Changes to the API require a library major-version bump. |
| |
| Code Fixes |
| ---------- |
| |
| * A small change to the API: DGifClose() and EGifClose() now take a |
| pointer-to-int second argument (like the corresponding openers) |
| where a diagnostic code will be deposited when they return |
| GIF_ERROR. This replaces the old behavior in which the GifFile |
| structure was left unfreed so the Error member in it could be filled |
| and remain available. The change was was required because it's |
| not always possible to free the struct afterwards. Case in point is |
| a C# wrapper for giflib (or any language/environment where you can't |
| just free objects allocated in a foreign shared library.) |
| |
| * Minor fix for SF bug #56; BitsPerPixel may be left as uninitialized |
| value when reading (truncated) gif. |
| |
| * Applied SF patch #17: Use a fallback on Windows where mkstemp is not |
| available. |
| |
| * Applied SF patch #15: Code hardening, preventing spurious |
| defective-image messages. |
| |
| Retirements |
| ----------- |
| |
| * Removed gif2raw from utils. Its blithe assumption that the EGA16 |
| palette is a reliable default is now about 20 years obsolete. Format |
| conversion is better done with convert(1) from the ImageMagick suite, |
| anyway. |
| |
| Version 5.0.6 |
| ============= |
| |
| Minor fix for a rare memory leak (SF bug #55). |
| |
| MinGW port fixes. |
| |
| Repair the internal quantization function used in gif2rgb so it's |
| less vulnerable to cross-platform skew due to qsort() being unstable. |
| This shouldn't affect production use, it's just a cross-platform |
| issue for regression testing |
| |
| Version 5.0.5 |
| ============= |
| |
| Set the error return properly when a screen descriptor read fails. |
| Fixes for some minor API documentation bugs. Some internal manual |
| pages are not to be installed. |
| |
| Version 5.0.4 |
| ============= |
| |
| Fix for a rare misrendering bug when a GIF overruns the decompression-code |
| table. The image on which this was spotted was a relatively long-running |
| animated GIF; still images of ordinary size should have been immune. |
| |
| Version 5.0.3 |
| ============= |
| |
| Fix a build-system glitch so it will install manpages. |
| |
| Version 5.0.2 |
| ============= |
| |
| Documentation and polish |
| ------------------------ |
| * Partial build is now possible on systems without xmlto. |
| |
| Code Fixes |
| ---------- |
| * Change unused return of EGifSetGifVersion() to void. |
| * Buffer overrun prevention in gifinto. |
| |
| Version 5.0.1 |
| ============= |
| |
| Documentation and polish |
| ------------------------ |
| * There is now an installable manual page for the GIFLIB utility kit. |
| |
| Retirements |
| ----------- |
| * gifinter is gone. Use "convert -interlace line" from the ImageMagick suite. |
| |
| Code Fixes |
| ---------- |
| * In 5.0.0 the private gif89 bit wasn't being guaranteed cleared at |
| the beginning of EGifGetGifVersion(); this occasionally led to an |
| incorrect version prefix being issued dependent on the state of |
| malloced memory. |
| * An EGifSetGifVersion() function taking a GifFile argument has been |
| added for use with the low-level sequential API. This change requires |
| a bump of the library revision number. |
| |
| Version 5.0.0 |
| ============= |
| |
| Changes to the API require a library major-version bump. Certain |
| initialization functions have acquired an integer address argument for |
| passing back an error code, in order to avoid thread-unsafe static |
| storage. Application code using extension blocks will require minor |
| changes. A few functions have been renamed. |
| |
| Code Fixes |
| ---------- |
| * Fixes applied for CVE-2005-2974 and CVE-2005-3350 |
| This closes Debian bug #337972. |
| |
| New API Features |
| ---------------- |
| |
| Thread Safety |
| ~~~~~~~~~~~~~ |
| The library is now completely re-entrant and thread-safe. |
| |
| * Library error handling no longer uses a static cell to store the last |
| error code registered; that made the library thread-unsafe. For functions |
| other than GIF file openers, the code is now put in an Error member of |
| the GifFileType structure. The GifError() and GifLastError() functions |
| that referenced that static cell are gone, and the GifErrorString() |
| function introduced in the 4.2 release now takes an explicit error code |
| argument. |
| * GIF file openers - DGifOpenFileName(), DGifOpenFileHandle(), DGifOpen(), |
| EGifOpenFileName(), EGifOpenFileHandle(), and EGifOpen() - all now take |
| a final integer address argument. If non-null, this is used to pass |
| back an error code when the function returns NULL. |
| |
| Extensions |
| ~~~~~~~~~~ |
| The ExtensionBlock API has been repaired, solving some problems with GIF89 |
| extension handling in earlier versions. |
| |
| * DGifSlurp() and EGifSpew() now preserve trailing extension blocks with |
| no following image file. |
| * Three documented functions - EGifPutExtensionFirst(), EGifPutExtensionNext(), |
| and EGifPutExtensionLast() - have been relaced by new functions |
| EGifPutExtensionLeader(), EGifPutExtensionBlock(), and |
| EGifPutExtensionTrailer(). See the Compatibility section of |
| the library API documentation for details. |
| * New functions DGifSavedExtensionToGCB() and EGifGCBToSavedExtension() |
| make it easy to read and edit GIF89 graphics control blocks in saved images. |
| |
| Namespacing |
| ~~~~~~~~~~~ |
| All functions exported by giflib now have DGif, EGif, or Gif as a name prefix. |
| |
| * Three documented functions - MakeMapObject(), FreeMapObject(), and |
| UnionColorMap() - have been renamed to GifMakeMapObject(), |
| GifFreeMapObject(), and GifUnionColorMap() respectively. |
| * The library Draw* functions are now prefixed GifDraw*, and the |
| text-drawing ones are suffixed with "8x8". This fixes a conflict |
| with the Windows API and leaves the door open for more general text-drawing |
| functions with different font sizes. |
| |
| Other changes |
| ~~~~~~~~~~~~~ |
| * DGifSlurp() and EGifSpew() now read and write interlaced images properly. |
| * The amazingly obscure colormap sort flag and pixel aspect ratio |
| features of GIF are now read and preserved, for whatever good that |
| may do. |
| * Six undocumented functions have been renamed; five of these take additional |
| or slightly different argument types. See the Compatibility section of |
| the library API documentation for details. |
| * There's now an EGifGetGifVersion() that computes the version EGifSpew() |
| will write. |
| * QuantizeBuffer() has been returned to the core library as GifQuantizeBuffer() |
| - turns out some important applications (notably mplayer) were using it. |
| * TRUE and FALSE macros are gone, also VoidPtr. No more namespace pollution. |
| * Various arguments have been made const where possible. |
| |
| Retirements |
| ----------- |
| * The (undocumented) gifinfo utility is gone. Use giftool -f instead. |
| * The gifburst utility is gone. Everybody has image viewers that |
| can pan now, and removing it gets rid of a dependency on Perl. |
| * gifcompose is gone. It was a decent idea when I wrote it in 1989, |
| but I did the same thing better and cleaner a decade later with |
| PILdriver in the PIL package. Removing it gets rid of a dependency |
| on shell. |
| * gif2x11 gifasm, gifcomb, gifflip, gifovly, gifpos, gifresize, and gifrotate |
| are all gone. The ImageMagick display(1)/convert(1) utilities and PILdriver |
| do these things better and in a format-independent way. |
| * Lennie Araki's Windows C++ wrapper is gone. It's eight years old, |
| unmaintained, he has dropped out of sight, and a better one needs to |
| be written to use the high-level GIFLIB API and GIF89 graphics |
| control extension support. We'll carry such a wrapper when we have |
| a maintainer for it. |
| * EGifSetVersion(), introduced in 4.2, is gone. The library always |
| writes GIF87 or GIF89 as required by the data. This change helps |
| with thread safety. |
| |
| Utilities |
| --------- |
| * Several utilities have been renamed to (a) fix last-century's habit |
| of arbitarily smashing vowels out of names to make them just one or two |
| characters shorter, (b) ensure that every utility in this set has 'gif' |
| as a name prefix. Here's the list: |
| |
| giffiltr -> giffilter |
| gifspnge -> gifsponge |
| icon2gif -> gifbuild |
| text2gif -> gifecho |
| raw2gif -> gif2raw |
| |
| * To go with its new name, gif2raw now dumps raw pixels from a GIF if the |
| (previously required) size option is missing. |
| * Standalone rgb2gif is gone; the same capability is now a mode of gif2rgb. |
| * giftext displays the parsed contents of GIF89 graphics control blocks. |
| * gifbuild handles GIF89 graphics control blocks and Netscape animation |
| loop blocks; it can can display and update either. |
| * gifrotate and other filter utilities now preserve extension blocks, |
| including the graphics control information for transparency and delay time. |
| * A new utility, giftool, supports a wide variety of filtering operations |
| on GIFs, including: setting background and transparency colors, changing |
| interlacing, setting image delays, setting the user-input flag, and setting |
| the aspect-ratio byte. It can sequence multiple operations. |
| * The test-pattern generators gifbg, gifcolor, gihisto and gifwedge and the |
| code templates giffilter and gifsponge are no longer installed by default. |
| |
| Documentation and polish |
| ------------------------ |
| * The history.txt and build.txt and files from 4.2.0 now have .asc extensions |
| to indicate that they use asciidoc markup, contrasting with the txt |
| standards files from CompuServe. |
| * The documentation now includes "What's In A GIF", a very detailed narrative |
| description of the file format. |
| * The -A option of gifasm (for inserting a loop control block) is documented. |
| * The documentation directory includes a copy of the original GIF87 |
| specification as well as GIF89's. |
| * The project now has a logo. |
| |
| Version 4.2.0 |
| ============= |
| |
| Now maintained by ESR again after handoff by Toshio Kuratomi. |
| |
| Code Fixes |
| ---------- |
| * Code updated internally to C99 to enable more correctness checks by |
| the compiler. Compiles under GCC 4.6.1 without errors or warnings. |
| * A rare resource leak in the colormap-object maker was found with |
| Coverity and fixed. |
| * The code now audits clean under Coverity and cppcheck. |
| * splint cleanup begun, there's a lot of work still to do on this. |
| |
| New API Features |
| ---------------- |
| * The default GIF version to write is now computed at write time from |
| the types of an image's extension blocks, but can be overridden with |
| EGifSetGifVersion(). |
| * EGifSpew() is now thread-safe. |
| * Two new functions, GifError() and GifErrorString(), |
| return the error state in a form that can be used by programs. |
| * Two library functions - EGifOpenFileName() and EGifPutImageDesc() - |
| now have bool rather than int flag arguments. Since bool is a |
| typedef of int and TRUE/FALSE have been redefined to true/false, |
| both source and object compatibility with older library versions |
| should be preserved. |
| * GAGetArgs(), used only in the utilities, now returns bool rather |
| than int. |
| * The undocumented GIF_LIB_VERSION symbol is gone from the library header. |
| It has been replaced with three documented symbols: GIFLIB_MAJOR, |
| GIFLIB_MINOR, and GIFLIB_RELEASE. |
| |
| Retirements |
| ----------- |
| * The gif2epsn and gif2iris utilities are gone. They were full of |
| platform dependencies for platforms long dead. There are enough |
| platform-independent GIF viewers in the world that these weren't |
| adding any value. Removing these gets rid of a dependency on GL. |
| * The rle2gif, gif2rle, and gif2ps utilities are also gone. There are enough |
| multiformat image converters in the world that these weren't adding |
| any value either. Removing them reduces the codebase's dependencies. |
| * The undocumented DumpScreen2Gif() is gone from the library. The |
| only non-obsolete capture mode it supported was through X, and that |
| probably hasn't been used in years and is replaceable by any number |
| of capture utilities. Dropping this code makes the library's |
| portability issues go away. |
| * QuantizeBuffer(), GifQprintf(), PrintGifError(), GIF_ERROR() |
| and GIF_MESSAGE() have been removed from the core library. |
| They were used only by the utilities. QuantizeBuffer() has been |
| inlined where it was used and the latter three are now part of the |
| utility support library. |
| * The Game Boy Advanced test code is gone. The platform was discontinued |
| in 2008; more to the point, nobody ever documented the code's assumptions |
| or expected results. |
| * The Changelog file is now retained for archival purposes only, and because |
| autotools throws a hissy fit if there isn't one. The single point of |
| truth about changes and the reasons for them is the repository history. |
| |
| Behavior changes |
| ---------------- |
| * The -q option of the utilities is replaced by an opposite -v (verbose) |
| option; the default is now quiet for all platforms. Defaulting to chattiness |
| on MSDOS made sense in a world of slow text consoles, but not today. |
| |
| Testing |
| ------- |
| * There is now a proper regression-test suite; run 'make' in tests/. |
| The old test-unx script is now tests/visual-check and can be run |
| occasionally for a check with the Mark One Eyeball. |
| |
| Documentation |
| ------------- |
| * Build instructions now live in build.txt |
| * An overview of the giflib API now lives in api.txt. |
| * Documentation is now in DocBook-XML, so either HTML or man pages can |
| be generated from it. |
| |
| Version 4.1.6 |
| ============= |
| Brown paper bag release. Fix a problem with header inclusion that could |
| prevent the library from building on some platforms. |
| |
| Version 4.1.5 |
| ============= |
| This version has some important fixes for segfaults when working with corrupt |
| files. All users are strongly encouraged to upgrade. |
| |
| Code Fixes |
| ---------- |
| * Fix segfault in utilities due to referencing ColorMaps in GifFiles that had |
| no ColorMap present. |
| * Fix gif2x11 to work on 24 bit displays. |
| * Fix for giftext segfault when the GifFile does not store a global colormap. |
| * Checks to fail gracefully when an image contains improper LZ codes. |
| * Close file handles on failure in DGifOpenFileHandle() |
| * Checks to operate on files in binary mode on WIN32 as well as MSDOS. |
| |
| Building |
| -------- |
| * Add checks to make building on Win32 easier. |
| * Allow turning off gl_s, rle, and X11 support from the configure command line. |
| * Fix for finding a 32 bit integer type on some platforms. |
| * Only enable -Wall if we're using gcc. |
| |
| Version 4.1.4 |
| ============= |
| This version fixes some bugs with deallocating ColorMaps. Fix building on |
| several platforms. Fix x86_64 builds to not hang the encoder. |
| |
| * Fix several areas in decoding where we removed a ColorMap from our GifFile |
| but didn't set the pointer to NULL. This could lead to double free's of |
| the ColorMap. |
| * Fix a bug in dev2gif.c where we redefined some gl types incorrectly. |
| * Fix a bug in the gif LZW encoder that was triggered on modern 64 bit |
| platforms. |
| * Fix building on Windows. Note -- there has been one API changing event for |
| Windows (renaming DrawText to DrawGifText.) This should have conflicted with |
| Windows API and therefore caused the builds to fail previously. If you had |
| it working with DrawText before, apologies, you'll need to change to |
| DrawGifText in your code. This only affects Windows. |
| * Add support for building on The Game Boy Advance. Note: Due to the GBA's |
| limited memory, the API for the GBA uses short's in many places where the |
| other platforms use ints. This shouldn't affect anyone unless you've |
| been able to get an older version of the code to run on GBA and want to |
| start using this version instead. A recompile of your dependent code |
| will be necessary in this case. |
| |
| Version 4.1.3 |
| ============= |
| This version fixes some bugs in the Extension writing code in |
| EGifPutExtensionFirst, Next, and Last. Using these functions, it is possible |
| to output extensions that contain multiple subblocks. Additionally, library |
| code has been updated to use these functions, making it safe to output |
| long Comments, and multi-block extensions read in from another file. |
| |
| * giflib is now hosted on sourceforge with libungif: |
| http://sourceforge.net/projects/libungif |
| * Make the EGifPutExtension{First,Next,Last} family of functions use WRITE |
| so user defined WRITE methods will output them correctly. |
| * Modify EGifSpew and EGifPutComment to use EGifPutExtension{First,Next,Last} |
| so we won't output broken GIFs when dealing with GIFs with multiple |
| subblocks. |
| * More -Wall fixes revealed while testing on Solaris and FreeBSD. |
| * Updated the gif_lib.html documentation to not use EGifPutExtension when |
| dealing with multiple subblocks. Use EGifPutExtension{First,Next,Last} |
| instead. |
| * Some Windows code from the old CVS repository now available in the windows |
| subdirectory. I don't have a Windows environment to test and maintain this |
| but maybe someone out there will find it useful. Caveat hacker. |
| |
| Version 4.1.2 |
| ============= |
| * Numerous bug fixes from people on the old libungif mailing list. |
| * GIF_ERROR and GIF_MESSAGE are on the deprecation list as they are also |
| utility helper functions rather than essential to the functioning of the |
| library. |
| * Complete deprecation list is now in the README file |
| * Audited the sources with gcc -Wall. Everything detectable has now been fixed. |
| * Ran the library code through indent. |
| |
| Version 4.1.1 |
| ============= |
| * Merge in many bug fixes that were sent in while I was hiking the |
| Appalachian Trail. |
| * The qprintf methods of the library are now deprecated. Do not use |
| GifQuietPrint or GifQprintf. These should have been pushed out into the |
| utility helper library instead of sitting around in the library proper at |
| the same time as the getarg functions were moved out. Getting rid of these |
| will let us get rid of our dependence on stdarg.h/varargs.h (Which a Gif |
| reading library has no business requiring.) |
| |
| Version 4.1.0 |
| ============= |
| * Several minor memory leaks in error conditions have been plugged. |
| * New Function EGifOpen(void *userData, OutputFunc writeFunc) allows user |
| specified gif writing functions. |
| * Old copyright notices in a few source files have been updated. All library |
| copyrights should now reflect the copyright notice in the COPYING file. |
| |
| Version 4.0.0 -- giflib |
| ======================= |
| This version of the giflib library merges Eric Raymond's giflib-3.0 release |
| with the libungif-4.0 release to give people a binary compatible choice |
| between the two libraries and gives me the chance to add bugfixes to giflib |
| that have been incorporated in libungif. |
| |
| PLEASE READ THE FILE PATENT_PROBLEMS BEFORE USING THIS LIBRARY! |
| |
| Version 4.0.0 |
| ============= |
| Major fixes have been made to the code that handles Extensions. |
| Unfortunately, this causes binary incompatibility with giflib-3.0 and |
| libungif-3.x. However, the API is still intact. I am, however, deprecating |
| the use of saveImage[x].Function. Use |
| saveImage[x].ExtensionBlocks[y].Function instead. |
| |
| Version 3.1.1 |
| ============= |
| The following bugs which caused SegFaults have been fixed: |
| * When reading gif files with extensions, DGifSlurp would violate memory. |
| * When closing a gif that had a local colormap, DGifCloseFile would attempt |
| to free the colormap twice. |
| * Fix a potential memory leak in DGifSlurp. |
| * New function DGifOpen to allow specifying a user definable gif reading |
| function. |
| |
| Version 3.1.0 |
| ============= |
| * Add a new function: |
| GifFileType *DGifOpen(void * userData, InputFunc readFunc) |
| to read the gif image from a user defined input function. |
| * A few bugfixes. |
| |
| Version 3.0 |
| =========== |
| |
| Changes from Eric Raymond's libgif |
| ---------------------------------- |
| * A new gif encoder that makes uncompressed gifs rather than standard, |
| LZW-compressed gifs. This is actually the major motivating factor behind |
| libungif; to provide third-party distributors a means to provide a gif |
| library without the patented LZW encoder. |
| * A new configure script to make compilation of the library on multiple |
| platforms easier. The package should now build shared libraries on all |
| platforms supported by GNU libtool. |
| * Removed the getarg functions from libgif. These were not part of the |
| public API and only used by the tools in the utils directory so I separated |
| them from the rest of the library. |
| * Fixed a few bugs in the tools in the utils directory. |
| |
| Version 3.0 |
| =========== |
| |
| New features |
| ------------ |
| * Incorporated Sirtaj Kang's changes to make both static and shared libs. |
| * All the utility and library docs are HTML now. |
| * The library and relevant utilities are now fully GIF89-aware. |
| * Functions for drawing text and boxes on saved images are documented. |
| * The distribution is now issued under a simple X-Consortium-style license. |
| * Can now generate package RPMs and LSM automatically. |
| * Home page with Web-acessible documentation at http://www.ccil.org/~esr/giflib |
| |
| Bug fixes |
| --------- |
| * Fix giftext to not core dump on a null extension record. |
| * Incorporate Philip VanBaren's change to prevent a core dump in gifasm. |
| |
| Version 2.3 |
| =========== |
| * Fixed a core-dump bug in gifcomb revealed by ELF environment in Linux 1.2.13. |
| |
| Version 2.2b |
| ============ |
| * Added gifburst tool. |
| |
| Version 2.2 |
| =========== |
| * Linux is supported. |
| |
| Version 2.1 |
| =========== |
| * Added the gifovly tool, which supports making a composite from several GIF |
| images. |
| * Used gifovly to implement a full-fledged pasteup program in shell. It's |
| called gifcompose and lives in the util directory. |
| * Added a copy of the GIF89 standard to the doc directory (gif89.txt); |
| also a description of the preferred compression method (lzgif.txt). |
| |
| Version 2.0 |
| =========== |
| With this version, development was taken over from Gershon Elber by Eric |
| S. Raymond <[email protected]>. Note that I, esr, have pretty much |
| adhered to Gershon's coding style, even though it's quite baroque and DOS- |
| headed by my standards. |
| |
| Library Improvements |
| -------------------- |
| * New DGifSlurp() and EGifSpew() library entry points allow all GIF-bashing |
| to be done in core on machines with sufficient memory. Writing code to |
| slice'n'dice multiple GIFs in non-sequential ways is now much easier (send |
| kudos and brickbats to esr, small unmarked bills preferred). |
| * The interface has changed somewhat. Members in the GifFileType structure |
| have been renamed and regrouped. This was required for support of the |
| SavedImages member (which enables the new functions mentioned in 1). Also, |
| there is a new data type for allocated color maps and routines to handle |
| it conveniently. |
| * Some minor bugs have been fixed. Most notably, the DGif code now correctly |
| handles the possibility of more than one code block per extension record, |
| as per the GIF spec. It's not clear, however, that anyone ever has or |
| ever will use this feature for anything... |
| |
| New Tools and Options |
| --------------------- |
| * A brand new, ultra-spiffy tool `icon2gif' is included. It assembles named |
| GIFs with editable text color map & icon raster representations to produce |
| multi-image GIFs usable as graphical resource files. It can also dump most |
| GIFs in the same text-only form it parses. This makes it easy to edit GIFs |
| even if you don't have a graphics editor. |
| * The gifclip utility supports a new `-c' (complement) option that allows you |
| to perform an `inverse clip', removing horizontal or vertical bands from an |
| image. |
| * The gifclrmp utility supports a new `-t' switch for shuffling color index |
| values. |
| * A new tool `gifcolor' generates test pattern from colormap input. |
| |
| New Documentation and Examples |
| ------------------------------ |
| * The documentation has been overhauled completely and translated out of the |
| dialect spoken by the estimable Mr. Elber into something like standard |
| English :-). |
| * Two source code files gifspnge.c and giffiltr.c have been added to the |
| util directory. These are GIF copiers that exercise the I/O routines, |
| provided as skeletons for your applications. Read the comments in them |
| for more info. |
| * The util Makefile for UNIX has been improved. It now uses the cc/gcc -s |
| option rather than strip(1). There are now separate install productions, |
| so you can test new versions in util before installation for production |
| (the top-level make script still does an install). |
| |
| Version 1.2 |
| =========== |
| * GIFFIX - a new tool to attempt and fix broken GIF images. Currently fix |
| images that has EOF prematurely by padding with the darkest color. |
| * Make GIF2BGI display as much as it can considering the mem. avail. |
| * Add -q flag to all tools for quite running scan line number mode. |
| * Fix a (minor!?) bug in the GIF decoder when encountering code 4095. |
| * New tools (RGB2GIF and GIF2RGB) to convert GIF to/from 24 bits RGB images. |
| * New tool GIFROTAT to rotate a gif image by an arbitrary angle. |
| * GifRSize was updated to resize by an arbitrary factor. |
| |
| Version 1.1 |
| =========== |
| * GIF2BGI - a new utility to display GIF images using Borland's BGI drivers |
| (if you have one...) |
| * TEXT2GIF - Converts plain text into GIF images. |
| * GIF2IRIS - SGI4D display program for GIF images. |
| * GIF_LIB naming convension has been modified to make sure it has unique |
| names (see gif_lib.h). |
| * Support for SGI4D gl and X11 window grabbing has been added to the |
| library. SGI4D input is quantizied into 8 bits. |
| Also support for EGA/VGA devices has been added as well. |
| see Dev2gif.c module. |
| * Support for the new gif89a format has been added. |
| |
| |
| |