xref: /aosp_15_r20/external/giflib/NEWS (revision 324bb76b8d05e2a05aa88511fff61cf3f9ca5892)
1			GIFLIB NEWS
2
3Repository head
4===============
5
6This is a point release intended to clear up a couple of CVEs and
7apply point fixes that have been accumulating since 5.2.1 There are a
8few unresolved (but minor) memory leaks related to design issues in
9the API that still need to be resolved.
10
11Code Fixes
12----------
13
14* Fixes for CVE-2023-48161, CVE-2022-28506,
15
16* Address SF issue #138 Documentation for obsolete utilities still installed
17
18* Address SF issue #139: Typo in "LZW image data" page ("110_2 = 4_10")
19
20* Address SF issue #140: Typo in "LZW image data" page ("LWZ")
21
22* Address SF issue #141: Typo in "Bits and bytes" page ("filed")
23
24* Note as already fixed SF issue #143: cannot compile under mingw
25
26* Address SF issue #144: giflib-5.2.1 cannot be build on windows and other platforms using c89
27
28* Address SF issue #145: Remove manual pages installation for binaries that are not installed too
29
30* Address SF issue #146: [PATCH] Limit installed man pages to binaries, move giflib to section 7
31
32* Address SF issue #147 [PATCH] Fixes to doc/whatsinagif/ content
33
34* Address SF issue #148: heap Out of Bound Read in gif2rgb.c:298 DumpScreen2RGB
35
36* Declared no-info on SF issue #150: There is a denial of service vulnerability in GIFLIB 5.2.1
37
38* Declared Won't-fix on SF issue 149: Out of source builds no longer possible
39
40* Address SF issue #151: A heap-buffer-overflow in gif2rgb.c:294:45
41
42* Address SF issue #152: Fix some typos on the html documentation and man pages
43
44* Address SF issue #153: Fix segmentation faults due to non correct checking for args
45
46* Address SF issue #154: Recover the giffilter manual page
47
48* Address SF issue #155: Add gifsponge docs
49
50* Address SF issue #157: An OutofMemory-Exception or Memory Leak in gif2rgb
51
52* Address SF issue #158: There is a null pointer problem in gif2rgb
53
54* Address SF issue #159 A heap-buffer-overflow in GIFLIB5.2.1 DumpScreen2RGB() in gif2rgb.c:298:45
55
56* Address SF issue #163: detected memory leaks in openbsd_reallocarray giflib/openbsd-reallocarray.c
57
58* Address SF issue #164: detected memory leaks in GifMakeMapObject giflib/gifalloc.c
59
60* Address SF issue #166: a read zero page leads segment fault in getarg.c and memory leaks in gif2rgb.c and gifmalloc.c
61
62* Address SF issue #167: Heap-Buffer Overflow during Image Saving in DumpScreen2RGB Function at Line 321 of gif2rgb.c
63
64Version 5.2.1
65==============
66
67This is the "Maybe I shouldn't have done a release while in surgical recovery" release.
68
69* In gifbuild.c, avoid a core dump on no color map.
70
71* Restore inadvertently removed library version numbers in Makefile.
72
73Version 5.2.0
74=============
75
76The undocumented and deprecated GifQuantizeBuffer() entry point
77has been moved to the util library to reduce libgif size and attack
78surface. Applications needing this function are couraged to link the
79util library or make their own copy.
80
81The following obsolete utility programs are no longer installed:
82gifecho, giffilter, gifinto, gifsponge. These were either installed in
83error or have been obsolesced by modern image-transformation tools
84like ImageMagick convert. They may be removed entirely in a future
85release.
86
87* Address SourceForge issue #136: Stack-buffer-overflow in gifcolor.c:84
88
89* Address SF bug #134: Giflib fails to slurp significant number of gifs
90
91* Apply SPDX convention for license tagging.
92
93Version 5.1.9
94=============
95
96The documentation directory now includes an HTMlified version of the
97GIF89 standard, and a more detailed description of how LZW compression
98is applied to GIFs.
99
100* Address SF bug #129: The latest version of giflib cannot be build on windows.
101
102* Address SF bug #126: Cannot compile giflib using c89
103
104Version 5.1.8
105=============
106
107* Address SF bug #119: MemorySanitizer: FPE on unknown address. This is CVE-2019-15133
108
109* Address SF bug #125: 5.1.7: xmlto is still required for tarball
110
111* Address SF bug #124: 5.1.7: ar invocation is not crosscompile compatible
112
113* Address SF bug #122: 5.1.7 installs manpages to wrong directory
114
115* Address SF bug #121: make: getversion: Command not found
116
117* Address SF bug #120: 5.1.7 does not build a proper library - no
118
119Version 5.1.7
120=============
121
122Correct a minor packaging error (superfluous symlinks) in the 5.1.6 tarballs.
123
124Version 5.1.6
125=============
126
127Build Fixes
128-----------
129
130Fix library installation in the Makefile.
131
132Version 5.1.5
133=============
134
135Code Fixes
136----------
137
138* Fix SF bug #114: Null dereferences in main() of gifclrmp
139
140* Fix SF bug #113: Heap Buffer Overflow-2 in function DGifDecompressLine()
141  in cgif.c.  This had been assigned CVE-2018-11490.
142
143* Fix SF bug #111: segmentation fault in PrintCodeBlock
144
145* Fix SF bug #109: Segmentation fault of giftool reading a crafted file
146
147* Fix SF bug #107: Floating point exception in giftext utility
148
149* Fix SF bug #105: heap buffer overflow in DumpScreen2RGB in gif2rgb.c:317
150
151* Fix SF bug #104: Ineffective bounds check in DGifSlurp
152
153^ Fix SF bug #103: GIFLIB 5.1.4: DGifSlurp fails on empty comment
154
155* Fix SF bug #87: Heap buffer overflow in 5.1.2 (gif2rgb).
156
157Build Fixes
158-----------
159
160The horrible old autoconf build system has been removed with extreme prejudice.
161You now build this simply by running "make" from the top-level directory.
162
163Version 5.1.4
164=============
165
166Code Fixes
167----------
168
169* Fix SF bug #94: giflib 5 loves to fail to load images... a LOT.
170
171* Fix SF Bug #92: Fix buffer overread in gifbuild.
172
173* Fix SF Bug #93: Add bounds check in gifbuild netscape2.0 path
174
175* Fix SF Bug #89: Fix buffer overread in gifbuild.
176
177Version 5.1.3
178=============
179
180As of this version the library and code has been seriously abused by fuzzers,
181smoking out crash bugs (now fixed) induced by various kinds of severely
182malformed GIF.
183
184Code Fixes
185----------
186
187* Prevent malloc randomess from causing the header output routine to emit
188  a GIF89 version string even when no GIF89 features are present. Only
189  breaks tests, not production code, but it's odd this wasn't caught sooner.
190
191* Prevent malloc randomess from producing sporadic failures by causing
192  sanity checks added in 5.1.2 to misfire.
193
194* Bulletproof gif2rgb against 0-height images. Addressed SF bug #78:
195  Heap overflow in gif2rgb with images of size 0, also SF bug #82.
196
197* Remove unnecessary duplicate EGifClose() in gifcolor.c. Fixes SF bug #83
198  introduced in 5.1.2.
199
200* Fix SF Bug #84: incorrect return of DGifSlurp().
201
202Version 5.1.2
203=============
204
205Code Fixes
206----------
207
208* Code hardening using reallocarray() from OpenBSD.
209
210* Sanity check in giffilter catches files with malformed extension records
211  Fixes SourceForge bug #63: malformed gif causes segfault in giffilter.
212
213* Inexpensive sanity check in DGifSlurp() catches malformed files with
214  no image descriptor. Fixes SourceForge bug #64: malformed gif causes
215  crash in giftool.
216
217* Fix SourceForge bug #66: GifDrawBoxedText8x8() modifying constant input
218  parameter.
219
220* Bail out of GIF read on invalid pixel width. Addresses Savannah bug
221  #67: invalid shift in dgif_lib.c
222
223* Fix SourceForge bug #69: #69 Malformed: Gif file with no extension
224  block after a GRAPHICS_EXT_FUNC_CODE extension causes segfault (in
225  giftext).
226
227* Fix SourceForge bug #71: Buffer overwrite when giffixing a malformed gif.
228
229* Fix SourceForge bug #73: Null pointer deference in gifclrmap (only
230  reachable with malformed GIF).
231
232* Fix SourceForge bug #74: Double free in gifsponge under 5.1.1,
233  for any valid gif image.
234
235* Fix SourceForge bug #75: GAGetArgs overflows due to uncounted use of va_arg.
236
237* Sanity check in giffix catches some malformed files. Addresses
238  SourceForge bug #77: dgif_lib.c: extension processing error
239
240
241Version 5.1.1
242=============
243
244Code Fixes
245----------
246
247* Numerous minor fixes in getarg.c. Affects only the utilities, not the
248  core library.
249
250* Fix SourceForge bug #59: DGifOpen can segfault if DGifGetScreenDesc fails.
251
252* SourceForge patch #20: In gifalloc, fix usage of realloc() in case of failure.
253
254* Fix SourceForge bug #61 Leak in gifsponge.
255
256Build Fixes
257----------
258
259* glibtoolize port fix for OS X.
260
261Version 5.1.0
262=============
263
264Changes to the API require a library major-version bump.
265
266Code Fixes
267----------
268
269* A small change to the API: DGifClose() and EGifClose() now take a
270  pointer-to-int second argument (like the corresponding openers)
271  where a diagnostic code will be deposited when they return
272  GIF_ERROR.  This replaces the old behavior in which the GifFile
273  structure was left unfreed so the Error member in it could be filled
274  and remain available.  The change was was required because it's
275  not always possible to free the struct afterwards. Case in point is
276  a C# wrapper for giflib (or any language/environment where you can't
277  just free objects allocated in a foreign shared library.)
278
279* Minor fix for SF bug #56; BitsPerPixel may be left as uninitialized
280  value when reading (truncated) gif.
281
282* Applied SF patch #17: Use a fallback on Windows where mkstemp is not
283  available.
284
285* Applied SF patch #15: Code hardening, preventing spurious
286  defective-image messages.
287
288Retirements
289-----------
290
291* Removed gif2raw from utils. Its blithe assumption that the EGA16
292  palette is a reliable default is now about 20 years obsolete. Format
293  conversion is better done with convert(1) from the ImageMagick suite,
294  anyway.
295
296Version 5.0.6
297=============
298
299Minor fix for a rare memory leak (SF bug #55).
300
301MinGW port fixes.
302
303Repair the internal quantization function used in gif2rgb so it's
304less vulnerable to cross-platform skew due to qsort() being unstable.
305This shouldn't affect production use, it's just a cross-platform
306issue for regression testing
307
308Version 5.0.5
309=============
310
311Set the error return properly when a screen descriptor read fails.
312Fixes for some minor API documentation bugs. Some internal manual
313pages are not to be installed.
314
315Version 5.0.4
316=============
317
318Fix for a rare misrendering bug when a GIF overruns the decompression-code
319table. The image on which this was spotted was a relatively long-running
320animated GIF; still images of ordinary size should have been immune.
321
322Version 5.0.3
323=============
324
325Fix a build-system glitch so it will install manpages.
326
327Version 5.0.2
328=============
329
330Documentation and polish
331------------------------
332* Partial build is now possible on systems without xmlto.
333
334Code Fixes
335----------
336* Change unused return of EGifSetGifVersion() to void.
337* Buffer overrun prevention in gifinto.
338
339Version 5.0.1
340=============
341
342Documentation and polish
343------------------------
344* There is now an installable manual page for the GIFLIB utility kit.
345
346Retirements
347-----------
348* gifinter is gone.  Use "convert -interlace line" from the ImageMagick suite.
349
350Code Fixes
351----------
352* In 5.0.0 the private gif89 bit wasn't being guaranteed cleared at
353  the beginning of EGifGetGifVersion(); this occasionally led to an
354  incorrect version prefix being issued dependent on the state of
355  malloced memory.
356* An EGifSetGifVersion() function taking a GifFile argument has been
357  added for use with the low-level sequential API. This change requires
358  a bump of the library revision number.
359
360Version 5.0.0
361=============
362
363Changes to the API require a library major-version bump. Certain
364initialization functions have acquired an integer address argument for
365passing back an error code, in order to avoid thread-unsafe static
366storage. Application code using extension blocks will require minor
367changes. A few functions have been renamed.
368
369Code Fixes
370----------
371* Fixes applied for CVE-2005-2974 and CVE-2005-3350
372  This closes Debian bug #337972.
373
374New API Features
375----------------
376
377Thread Safety
378~~~~~~~~~~~~~
379The library is now completely re-entrant and thread-safe.
380
381* Library error handling no longer uses a static cell to store the last
382  error code registered; that made the library thread-unsafe.  For functions
383  other than GIF file openers, the code is now put in an Error member of
384  the GifFileType structure.  The GifError() and GifLastError() functions
385  that referenced that static cell are gone, and the GifErrorString()
386  function introduced in the 4.2 release now takes an explicit error code
387  argument.
388* GIF file openers - DGifOpenFileName(), DGifOpenFileHandle(), DGifOpen(),
389  EGifOpenFileName(), EGifOpenFileHandle(), and EGifOpen() - all now take
390  a final integer address argument.  If non-null, this is used to pass
391  back an error code when the function returns NULL.
392
393Extensions
394~~~~~~~~~~
395The ExtensionBlock API has been repaired, solving some problems with GIF89
396extension handling in earlier versions.
397
398* DGifSlurp() and EGifSpew() now preserve trailing extension blocks with
399  no following image file.
400* Three documented functions - EGifPutExtensionFirst(), EGifPutExtensionNext(),
401  and EGifPutExtensionLast() - have been relaced by new functions
402  EGifPutExtensionLeader(), EGifPutExtensionBlock(), and
403  EGifPutExtensionTrailer().  See the Compatibility section of
404  the library API documentation for details.
405* New functions DGifSavedExtensionToGCB() and EGifGCBToSavedExtension()
406  make it easy to read and edit GIF89 graphics control blocks in saved images.
407
408Namespacing
409~~~~~~~~~~~
410All functions exported by giflib now have DGif, EGif, or Gif as a name prefix.
411
412* Three documented functions - MakeMapObject(), FreeMapObject(), and
413  UnionColorMap() - have been renamed to GifMakeMapObject(),
414  GifFreeMapObject(), and GifUnionColorMap() respectively.
415* The library Draw* functions are now prefixed GifDraw*, and the
416  text-drawing ones are suffixed with "8x8". This fixes a conflict
417  with the Windows API and leaves the door open for more general text-drawing
418  functions with different font sizes.
419
420Other changes
421~~~~~~~~~~~~~
422* DGifSlurp() and EGifSpew() now read and write interlaced images properly.
423* The amazingly obscure colormap sort flag and pixel aspect ratio
424  features of GIF are now read and preserved, for whatever good that
425  may do.
426* Six undocumented functions have been renamed; five of these take additional
427  or slightly different argument types. See the Compatibility section of
428  the library API documentation for details.
429* There's now an EGifGetGifVersion() that computes the version EGifSpew()
430  will write.
431* QuantizeBuffer() has been returned to the core library as GifQuantizeBuffer()
432  - turns out some important applications (notably mplayer) were using it.
433* TRUE and FALSE macros are gone, also VoidPtr.  No more namespace pollution.
434* Various arguments have been made const where possible.
435
436Retirements
437-----------
438* The (undocumented) gifinfo utility is gone.  Use giftool -f instead.
439* The gifburst utility is gone.  Everybody has image viewers that
440  can pan now, and removing it gets rid of a dependency on Perl.
441* gifcompose is gone.  It was a decent idea when I wrote it in 1989,
442  but I did the same thing better and cleaner a decade later with
443  PILdriver in the PIL package. Removing it gets rid of a dependency
444  on shell.
445* gif2x11 gifasm, gifcomb, gifflip, gifovly, gifpos, gifresize, and gifrotate
446  are all gone.  The ImageMagick display(1)/convert(1) utilities and PILdriver
447  do these things better and in a format-independent way.
448* Lennie Araki's Windows C++ wrapper is gone. It's eight years old,
449  unmaintained, he has dropped out of sight, and a better one needs to
450  be written to use the high-level GIFLIB API and GIF89 graphics
451  control extension support.  We'll carry such a wrapper when we have
452  a maintainer for it.
453* EGifSetVersion(), introduced in 4.2, is gone. The library always
454  writes GIF87 or GIF89 as required by the data. This change helps
455  with thread safety.
456
457Utilities
458---------
459* Several utilities have been renamed to (a) fix last-century's habit
460  of arbitarily smashing vowels out of names to make them just one or two
461  characters shorter, (b) ensure that every utility in this set has 'gif'
462  as a name prefix. Here's the list:
463
464	giffiltr -> giffilter
465	gifspnge -> gifsponge
466	icon2gif -> gifbuild
467	text2gif -> gifecho
468  	raw2gif  -> gif2raw
469
470* To go with its new name, gif2raw now dumps raw pixels from a GIF if the
471  (previously required) size option is missing.
472* Standalone rgb2gif is gone; the same capability is now a mode of gif2rgb.
473* giftext displays the parsed contents of GIF89 graphics control blocks.
474* gifbuild handles GIF89 graphics control blocks and Netscape animation
475  loop blocks; it can can display and update either.
476* gifrotate and other filter utilities now preserve extension blocks,
477  including the graphics control information for transparency and delay time.
478* A new utility, giftool, supports a wide variety of filtering operations
479  on GIFs, including: setting background and transparency colors, changing
480  interlacing, setting image delays, setting the user-input flag, and setting
481  the aspect-ratio byte.  It can sequence multiple operations.
482* The test-pattern generators gifbg, gifcolor, gihisto and gifwedge and the
483  code templates giffilter and gifsponge are no longer installed by default.
484
485Documentation and polish
486------------------------
487* The history.txt and build.txt and files from 4.2.0 now have .asc extensions
488  to indicate that they use asciidoc markup, contrasting with the txt
489  standards files from CompuServe.
490* The documentation now includes "What's In A GIF", a very detailed narrative
491  description of the file format.
492* The -A option of gifasm (for inserting a loop control block) is documented.
493* The documentation directory includes a copy of the original GIF87
494  specification as well as GIF89's.
495* The project now has a logo.
496
497Version 4.2.0
498=============
499
500Now maintained by ESR again after handoff by Toshio Kuratomi.
501
502Code Fixes
503----------
504* Code updated internally to C99 to enable more correctness checks by
505  the compiler. Compiles under GCC 4.6.1 without errors or warnings.
506* A rare resource leak in the colormap-object maker was found with
507  Coverity and fixed.
508* The code now audits clean under Coverity and cppcheck.
509* splint cleanup begun, there's a lot of work still to do on this.
510
511New API Features
512----------------
513* The default GIF version to write is now computed at write time from
514  the types of an image's extension blocks, but can be overridden with
515  EGifSetGifVersion().
516* EGifSpew() is now thread-safe.
517* Two new functions, GifError() and GifErrorString(),
518  return the error state in a form that can be used by programs.
519* Two library functions - EGifOpenFileName() and EGifPutImageDesc() -
520  now have bool rather than int flag arguments. Since bool is a
521  typedef of int and TRUE/FALSE have been redefined to true/false,
522  both source and object compatibility with older library versions
523  should be preserved.
524* GAGetArgs(), used only in the utilities, now returns bool rather
525  than int.
526* The undocumented GIF_LIB_VERSION symbol is gone from the library header.
527  It has been replaced with three documented symbols: GIFLIB_MAJOR,
528  GIFLIB_MINOR, and GIFLIB_RELEASE.
529
530Retirements
531-----------
532* The gif2epsn and gif2iris utilities are gone.  They were full of
533  platform dependencies for platforms long dead.  There are enough
534  platform-independent GIF viewers in the world that these weren't
535  adding any value. Removing these gets rid of a dependency on GL.
536* The rle2gif, gif2rle, and gif2ps utilities are also gone. There are enough
537  multiformat image converters in the world that these weren't adding
538  any value either.  Removing them reduces the codebase's dependencies.
539* The undocumented DumpScreen2Gif() is gone from the library.  The
540  only non-obsolete capture mode it supported was through X, and that
541  probably hasn't been used in years and is replaceable by any number
542  of capture utilities.  Dropping this code makes the library's
543  portability issues go away.
544* QuantizeBuffer(), GifQprintf(), PrintGifError(), GIF_ERROR()
545  and GIF_MESSAGE() have been removed from the core library.
546  They were used only by the utilities. QuantizeBuffer() has been
547  inlined where it was used and the latter three are now part of the
548  utility support library.
549* The Game Boy Advanced test code is gone.  The platform was discontinued
550  in 2008; more to the point, nobody ever documented the code's assumptions
551  or expected results.
552* The Changelog file is now retained for archival purposes only, and because
553  autotools throws a hissy fit if there isn't one.  The single point of
554  truth about changes and the reasons for them is the repository history.
555
556Behavior changes
557----------------
558* The -q option of the utilities is replaced by an opposite -v (verbose)
559  option; the default is now quiet for all platforms.  Defaulting to chattiness
560  on MSDOS made sense in a world of slow text consoles, but not today.
561
562Testing
563-------
564* There is now a proper regression-test suite; run 'make' in tests/.
565  The old test-unx script is now tests/visual-check and can be run
566  occasionally for a check with the Mark One Eyeball.
567
568Documentation
569-------------
570* Build instructions now live in build.txt
571* An overview of the giflib API now lives in api.txt.
572* Documentation is now in DocBook-XML, so either HTML or man pages can
573  be generated from it.
574
575Version 4.1.6
576=============
577Brown paper bag release.  Fix a problem with header inclusion that could
578prevent the library from building on some platforms.
579
580Version 4.1.5
581=============
582This version has some important fixes for segfaults when working with corrupt
583files.  All users are strongly encouraged to upgrade.
584
585Code Fixes
586----------
587* Fix segfault in utilities due to referencing ColorMaps in GifFiles that had
588  no ColorMap present.
589* Fix gif2x11 to work on 24 bit displays.
590* Fix for giftext segfault when the GifFile does not store a global colormap.
591* Checks to fail gracefully when an image contains improper LZ codes.
592* Close file handles on failure in DGifOpenFileHandle()
593* Checks to operate on files in binary mode on WIN32 as well as MSDOS.
594
595Building
596--------
597* Add checks to make building on Win32 easier.
598* Allow turning off gl_s, rle, and X11 support from the configure command line.
599* Fix for finding a 32 bit integer type on some platforms.
600* Only enable -Wall if we're using gcc.
601
602Version 4.1.4
603=============
604This version fixes some bugs with deallocating ColorMaps.  Fix building on
605several platforms.  Fix x86_64 builds to not hang the encoder.
606
607* Fix several areas in decoding where we removed a ColorMap from our GifFile
608  but didn't set the pointer to NULL.  This could lead to double free's of
609  the ColorMap.
610* Fix a bug in dev2gif.c where we redefined some gl types incorrectly.
611* Fix a bug in the gif LZW encoder that was triggered on modern 64 bit
612  platforms.
613* Fix building on Windows.  Note -- there has been one API changing event for
614  Windows (renaming DrawText to DrawGifText.)  This should have conflicted with
615  Windows API and therefore caused the builds to fail previously.  If you had
616  it working with DrawText before, apologies, you'll need to change to
617  DrawGifText in your code.  This only affects Windows.
618* Add support for building on The Game Boy Advance.  Note: Due to the GBA's
619  limited memory, the API for the GBA uses short's in many places where the
620  other platforms use ints.  This shouldn't affect anyone unless you've
621  been able to get an older version of the code to run on GBA and want to
622  start using this version instead.  A recompile of your dependent code
623  will be necessary in this case.
624
625Version 4.1.3
626=============
627This version fixes some bugs in the Extension writing code in
628EGifPutExtensionFirst, Next, and Last.  Using these functions, it is possible
629to output extensions that contain multiple subblocks.  Additionally, library
630code has been updated to use these functions, making it safe to output
631long Comments, and multi-block extensions read in from another file.
632
633* giflib is now hosted on sourceforge with libungif:
634  http://sourceforge.net/projects/libungif
635* Make the EGifPutExtension{First,Next,Last} family of functions use WRITE
636  so user defined WRITE methods will output them correctly.
637* Modify EGifSpew and EGifPutComment to use EGifPutExtension{First,Next,Last}
638  so we won't output broken GIFs when dealing with GIFs with multiple
639  subblocks.
640* More -Wall fixes revealed while testing on Solaris and FreeBSD.
641* Updated the gif_lib.html documentation to not use EGifPutExtension when
642  dealing with multiple subblocks.  Use EGifPutExtension{First,Next,Last}
643  instead.
644* Some Windows code from the old CVS repository now available in the windows
645  subdirectory.  I don't have a Windows environment to test and maintain this
646  but maybe someone out there will find it useful.  Caveat hacker.
647
648Version 4.1.2
649=============
650* Numerous bug fixes from people on the old libungif mailing list.
651* GIF_ERROR and GIF_MESSAGE are on the deprecation list as they are also
652  utility helper functions rather than essential to the functioning of the
653  library.
654* Complete deprecation list is now in the README file
655* Audited the sources with gcc -Wall. Everything detectable has now been fixed.
656* Ran the library code through indent.
657
658Version 4.1.1
659=============
660* Merge in many bug fixes that were sent in while I was hiking the
661  Appalachian Trail.
662* The qprintf methods of the library are now deprecated.  Do not use
663  GifQuietPrint or GifQprintf.  These should have been pushed out into the
664  utility helper library instead of sitting around in the library proper at
665  the same time as the getarg functions were moved out.  Getting rid of these
666  will let us get rid of our dependence on stdarg.h/varargs.h (Which a Gif
667  reading library has no business requiring.)
668
669Version 4.1.0
670=============
671* Several minor memory leaks in error conditions have been plugged.
672* New Function EGifOpen(void *userData, OutputFunc writeFunc) allows user
673  specified gif writing functions.
674* Old copyright notices in a few source files have been updated.  All library
675  copyrights should now reflect the copyright notice in the COPYING file.
676
677Version 4.0.0 -- giflib
678=======================
679This version of the giflib library merges Eric Raymond's giflib-3.0 release
680with the libungif-4.0 release to give people a binary compatible choice
681between the two libraries and gives me the chance to add bugfixes to giflib
682that have been incorporated in libungif.
683
684PLEASE READ THE FILE PATENT_PROBLEMS BEFORE USING THIS LIBRARY!
685
686Version 4.0.0
687=============
688Major fixes have been made to the code that handles Extensions.
689Unfortunately, this causes binary incompatibility with giflib-3.0 and
690libungif-3.x.  However, the API is still intact.  I am, however, deprecating
691the use of saveImage[x].Function.  Use
692saveImage[x].ExtensionBlocks[y].Function instead.
693
694Version 3.1.1
695=============
696 The following bugs which caused SegFaults have been fixed:
697 * When reading gif files with extensions, DGifSlurp would violate memory.
698 * When closing a gif that had a local colormap, DGifCloseFile would attempt
699   to free the colormap twice.
700 * Fix a potential memory leak in DGifSlurp.
701 * New function DGifOpen to allow specifying a user definable gif reading
702   function.
703
704Version 3.1.0
705=============
706 * Add a new function:
707        GifFileType *DGifOpen(void * userData, InputFunc readFunc)
708   to read the gif image from a user defined input function.
709 * A few bugfixes.
710
711Version 3.0
712===========
713
714Changes from Eric Raymond's libgif
715----------------------------------
716* A new gif encoder that makes uncompressed gifs rather than standard,
717  LZW-compressed gifs.  This is actually the major motivating factor behind
718  libungif; to provide third-party distributors a means to provide a gif
719  library without the patented LZW encoder.
720* A new configure script to make compilation of the library on multiple
721  platforms easier.  The package should now build shared libraries on all
722  platforms supported by GNU libtool.
723* Removed the getarg functions from libgif.  These were not part of the
724  public API and only used by the tools in the utils directory so I separated
725  them from the rest of the library.
726* Fixed a few bugs in the tools in the utils directory.
727
728Version 3.0
729===========
730
731New features
732------------
733* Incorporated Sirtaj Kang's changes to make both static and shared libs.
734* All the utility and library docs are HTML now.
735* The library and relevant utilities are now fully GIF89-aware.
736* Functions for drawing text and boxes on saved images are documented.
737* The distribution is now issued under a simple X-Consortium-style license.
738* Can now generate package RPMs and LSM automatically.
739* Home page with Web-acessible documentation at http://www.ccil.org/~esr/giflib
740
741Bug fixes
742---------
743* Fix giftext to not core dump on a null extension record.
744* Incorporate Philip VanBaren's change to prevent a core dump in gifasm.
745
746Version 2.3
747===========
748* Fixed a core-dump bug in gifcomb revealed by ELF environment in Linux 1.2.13.
749
750Version 2.2b
751============
752* Added gifburst tool.
753
754Version 2.2
755===========
756* Linux is supported.
757
758Version 2.1
759===========
760* Added the gifovly tool, which supports making a composite from several GIF
761  images.
762* Used gifovly to implement a full-fledged pasteup program in shell.  It's
763  called gifcompose and lives in the util directory.
764* Added a copy of the GIF89 standard to the doc directory (gif89.txt);
765  also a description of the preferred compression method (lzgif.txt).
766
767Version 2.0
768===========
769   With this version, development was taken over from Gershon Elber by Eric
770S. Raymond <[email protected]>.  Note that I, esr, have pretty much
771adhered to Gershon's coding style, even though it's quite baroque and DOS-
772headed by my standards.
773
774Library Improvements
775--------------------
776* New DGifSlurp() and EGifSpew() library entry points allow all GIF-bashing
777  to be done in core on machines with sufficient memory.  Writing code to
778  slice'n'dice multiple GIFs in non-sequential ways is now much easier (send
779  kudos and brickbats to esr, small unmarked bills preferred).
780* The interface has changed somewhat.  Members in the GifFileType structure
781  have been renamed and regrouped.  This was required for support of the
782  SavedImages member (which enables the new functions mentioned in 1).  Also,
783  there is a new data type for allocated color maps and routines to handle
784  it conveniently.
785* Some minor bugs have been fixed.  Most notably, the DGif code now correctly
786  handles the possibility of more than one code block per extension record,
787  as per the GIF spec.  It's not clear, however, that anyone ever has or
788  ever will use this feature for anything...
789
790New Tools and Options
791---------------------
792* A brand new, ultra-spiffy tool `icon2gif' is included.  It assembles named
793  GIFs with editable text color map & icon raster representations to produce
794  multi-image GIFs usable as graphical resource files.  It can also dump most
795  GIFs in the same text-only form it parses.  This makes it easy to edit GIFs
796  even if you don't have a graphics editor.
797* The gifclip utility supports a new `-c' (complement) option that allows you
798  to perform an `inverse clip', removing horizontal or vertical bands from an
799  image.
800* The gifclrmp utility supports a new `-t' switch for shuffling color index
801   values.
802* A new tool `gifcolor' generates test pattern from colormap input.
803
804New Documentation and Examples
805------------------------------
806* The documentation has been overhauled completely and translated out of the
807  dialect spoken by the estimable Mr. Elber into something like standard
808  English :-).
809* Two source code files gifspnge.c and giffiltr.c have been added to the
810  util directory.  These are GIF copiers that exercise the I/O routines,
811  provided as skeletons for your applications.  Read the comments in them
812  for more info.
813* The util Makefile for UNIX has been improved.  It now uses the cc/gcc -s
814  option rather than strip(1).  There are now separate install productions,
815  so you can test new versions in util before installation for production
816  (the top-level make script still does an install).
817
818Version 1.2
819===========
820* GIFFIX - a new tool to attempt and fix broken GIF images. Currently fix
821  images that has EOF prematurely by padding with the darkest color.
822* Make GIF2BGI display as much as it can considering the mem. avail.
823* Add -q flag to all tools for quite running scan line number mode.
824* Fix a (minor!?) bug in the GIF decoder when encountering code 4095.
825* New tools (RGB2GIF and GIF2RGB) to convert GIF to/from 24 bits RGB images.
826* New tool GIFROTAT to rotate a gif image by an arbitrary angle.
827* GifRSize was updated to resize by an arbitrary factor.
828
829Version 1.1
830===========
831* GIF2BGI - a new utility to display GIF images using Borland's BGI drivers
832  (if you have one...)
833* TEXT2GIF - Converts plain text into GIF images.
834* GIF2IRIS - SGI4D display program for GIF images.
835* GIF_LIB naming convension has been modified to make sure it has unique
836  names (see gif_lib.h).
837* Support for SGI4D gl and X11 window grabbing has been added to the
838  library. SGI4D input is quantizied into 8 bits.
839  Also support for EGA/VGA devices has been added as well.
840  see Dev2gif.c module.
841* Support for the new gif89a format has been added.
842
843
844
845