Compare commits

...
Sign in to create a new pull request.

4 commits

Author SHA1 Message Date
Fedora Release Engineering
4b7e798e92 dist-git conversion 2010-07-28 15:38:08 +00:00
Bill Nottingham
f2eab389b1 Fix typo that causes a failure to update the common directory. (releng
#2781)
2009-11-26 01:56:27 +00:00
Robert Scheck
06781ad3a1 - CVE-2005-2974: NULL pointer dereference crash (#494826)
- CVE-2005-3350: Memory corruption via a crafted GIF (#494823)
- Solved multilib problems with documentation (#465208, #474538)
- Removed static library from giflib-devel package (#225796 #c1)
2009-05-16 01:45:27 +00:00
Jesse Keating
e4d30ac6d9 Initialize branch F-9 for giflib 2008-04-20 19:28:13 +00:00
5 changed files with 161 additions and 83 deletions

View file

View file

@ -1,21 +0,0 @@
# Makefile for source rpm: giflib
# $Id: Makefile,v 1.1 2005/10/06 19:18:05 wtogami Exp $
NAME := giflib
SPECFILE = $(firstword $(wildcard *.spec))
define find-makefile-common
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
endef
MAKEFILE_COMMON := $(shell $(find-makefile-common))
ifeq ($(MAKEFILE_COMMON),)
# attempt a checkout
define checkout-makefile-common
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
endef
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
endif
include $(MAKEFILE_COMMON)

View file

@ -0,0 +1,94 @@
--- giflib-4.1.3/lib/gifalloc.c 2005-10-27 15:37:01.000000000 -0400
+++ giflib-4.1.3/lib/gifalloc.c.colormap 2005-10-27 15:37:39.000000000 -0400
@@ -420,8 +420,10 @@
}
for (sp = GifFile->SavedImages;
sp < GifFile->SavedImages + GifFile->ImageCount; sp++) {
- if (sp->ImageDesc.ColorMap)
+ if (sp->ImageDesc.ColorMap) {
FreeMapObject(sp->ImageDesc.ColorMap);
+ sp->ImageDesc.ColorMap = NULL;
+ }
if (sp->RasterBits)
free((char *)sp->RasterBits);
--- giflib-4.1.3/lib/dgif_lib.c 2005-10-27 15:21:30.000000000 -0400
+++ giflib-4.1.3/lib/dgif_lib.c.colormap 2005-10-27 15:25:26.000000000 -0400
@@ -263,6 +263,7 @@
for (i = 0; i < GifFile->SColorMap->ColorCount; i++) {
if (READ(GifFile, Buf, 3) != 3) {
FreeMapObject(GifFile->SColorMap);
+ GifFile->SColorMap = NULL;
_GifError = D_GIF_ERR_READ_FAILED;
return GIF_ERROR;
}
@@ -363,6 +364,7 @@
for (i = 0; i < GifFile->Image.ColorMap->ColorCount; i++) {
if (READ(GifFile, Buf, 3) != 3) {
FreeMapObject(GifFile->Image.ColorMap);
+ GifFile->Image.ColorMap = NULL;
_GifError = D_GIF_ERR_READ_FAILED;
return GIF_ERROR;
}
@@ -923,6 +925,12 @@
0x0fff
};
+ /* The image can't contain more than LZ_BITS per code. */
+ if (Private->RunningBits > LZ_BITS) {
+ _GifError = D_GIF_ERR_IMAGE_DEFECT;
+ return GIF_ERROR;
+ }
+
while (Private->CrntShiftState < Private->RunningBits) {
/* Needs to get more bytes from input stream for next code: */
if (DGifBufferedInput(GifFile, Private->Buf, &NextByte) == GIF_ERROR) {
@@ -938,8 +946,12 @@
Private->CrntShiftState -= Private->RunningBits;
/* If code cannot fit into RunningBits bits, must raise its size. Note
- * however that codes above 4095 are used for special signaling. */
- if (++Private->RunningCode > Private->MaxCode1 &&
+ * however that codes above 4095 are used for special signaling.
+ * If we're using LZ_BITS bits already and we're at the max code, just
+ * keep using the table as it is, don't increment Private->RunningCode.
+ */
+ if (Private->RunningCode < LZ_MAX_CODE + 2 &&
+ ++Private->RunningCode > Private->MaxCode1 &&
Private->RunningBits < LZ_BITS) {
Private->MaxCode1 <<= 1;
Private->RunningBits++;
@@ -964,6 +976,14 @@
_GifError = D_GIF_ERR_READ_FAILED;
return GIF_ERROR;
}
+ /* There shouldn't be any empty data blocks here as the LZW spec
+ * says the LZW termination code should come first. Therefore we
+ * shouldn't be inside this routine at that point.
+ */
+ if (Buf[0] == 0) {
+ _GifError = D_GIF_ERR_IMAGE_DEFECT;
+ return GIF_ERROR;
+ }
if (READ(GifFile, &Buf[1], Buf[0]) != Buf[0]) {
_GifError = D_GIF_ERR_READ_FAILED;
return GIF_ERROR;
--- giflib-4.1.3/lib/egif_lib.c 2005-10-27 15:25:37.000000000 -0400
+++ giflib-4.1.3/lib/egif_lib.c.colormap 2005-10-27 15:29:30.000000000 -0400
@@ -712,10 +712,14 @@
Buf = ';';
WRITE(GifFile, &Buf, 1);
- if (GifFile->Image.ColorMap)
+ if (GifFile->Image.ColorMap) {
FreeMapObject(GifFile->Image.ColorMap);
- if (GifFile->SColorMap)
+ GifFile->Image.ColorMap = NULL;
+ }
+ if (GifFile->SColorMap) {
FreeMapObject(GifFile->SColorMap);
+ GifFile->SColorMap = NULL;
+ }
if (Private) {
free((char *)Private);
}

View file

@ -1,5 +1,5 @@
--- giflib-4.1.3/lib/gif_hash.c.64 2005-09-20 13:39:32.000000000 -0700
+++ giflib-4.1.3/lib/gif_hash.c 2005-09-20 13:41:40.000000000 -0700
--- giflib-4.1.3/lib/gif_hash.c 2005-09-20 13:39:32.000000000 -0700
+++ giflib-4.1.3/lib/gif_hash.c.hash64 2005-09-20 13:41:40.000000000 -0700
@@ -45,7 +45,7 @@
NumberOfMisses = 0;
#endif /* DEBUG_HIT_RATE */
@ -52,8 +52,8 @@
{
return ((Item >> 12) ^ Item) & HT_KEY_MASK;
}
--- giflib-4.1.3/lib/gif_hash.h.64 2005-09-20 13:39:42.000000000 -0700
+++ giflib-4.1.3/lib/gif_hash.h 2005-09-20 13:42:08.000000000 -0700
--- giflib-4.1.3/lib/gif_hash.h 2005-09-20 13:39:42.000000000 -0700
+++ giflib-4.1.3/lib/gif_hash.h.hash64 2005-09-20 13:42:08.000000000 -0700
@@ -25,12 +25,12 @@
#define HT_PUT_CODE(l) (l & 0x0FFF)
@ -70,8 +70,8 @@
+int _ExistsHashTable(GifHashTableType *HashTable, unsigned int Key);
#endif /* _GIF_HASH_H_ */
--- giflib-4.1.3/lib/egif_lib.c.64 2005-09-20 13:45:28.000000000 -0700
+++ giflib-4.1.3/lib/egif_lib.c 2005-09-20 13:43:39.000000000 -0700
--- giflib-4.1.3/lib/egif_lib.c 2005-09-20 13:45:28.000000000 -0700
+++ giflib-4.1.3/lib/egif_lib.c.hash64 2005-09-20 13:43:39.000000000 -0700
@@ -188,6 +188,12 @@
_GifError = E_GIF_ERR_NOT_ENOUGH_MEM;
return NULL;

View file

@ -1,82 +1,83 @@
Summary: Library for manipulating GIF format image files
Name: giflib
Version: 4.1.3
Release: 9
License: MIT
URL: http://www.sf.net/projects/libungif/
Source0: http://dl.sf.net/libungif/%{name}-%{version}.tar.bz2
Patch0: giflib-hash64.patch
Group: System Environment/Libraries
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: libX11-devel, libICE-devel, libSM-devel, libXt-devel
Obsoletes: libungif <= %{version}-%{release}
Provides: libungif <= %{version}-%{release}
Summary: Library for manipulating GIF format image files
Name: giflib
Version: 4.1.3
Release: 10%{?dist}
License: MIT
Group: System Environment/Libraries
URL: http://www.sourceforge.net/projects/%{name}/
Source: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.bz2
Patch0: giflib-4.1.3-hash64.patch
Patch1: giflib-4.1.3-colormap.patch
BuildRequires: libX11-devel, libICE-devel, libSM-devel, libXt-devel
Provides: libungif = %{version}-%{release}
Obsoletes: libungif <= %{version}-%{release}
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%description
The giflib package contains a shared library of functions for
loading and saving GIF format image files. It is API and ABI compatible
with libungif, the library which supported uncompressed GIFs while the
Unisys LZW patent was in effect.
Install the giflib package if you need to write programs that use GIF files.
You should also install the giflib-utils package if you need some simple
utilities to manipulate GIFs.
The giflib package contains a shared library of functions for loading and
saving GIF format image files. It is API and ABI compatible with libungif,
the library which supported uncompressed GIFs while the Unisys LZW patent
was in effect.
%package devel
Summary: Development tools for programs which will use the libungif library
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Provides: libungif-devel <= %{version}-%{release}
Obsoletes: libungif-devel <= %{version}-%{release}
Summary: Development tools for programs using the giflib library
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Provides: libungif-devel = %{version}-%{release}
Obsoletes: libungif-devel <= %{version}-%{release}
%description devel
This package contains the static libraries, header files and
documentation necessary for development of programs that will use the
giflib library to load and save GIF format image files.
You should install this package if you need to develop programs which
will use giflib library functions. You'll also need to install the
giflib package.
The giflib-devel package includes header files, libraries necessary for
developing programs which use the giflib library to load and save GIF format
image files. It contains the documentation of the giflib library, too.
%package utils
Summary: Programs for manipulating GIF format image files
Group: Applications/Multimedia
Requires: %{name} = %{version}-%{release}
Obsoletes: libungif-progs <= %{version}-%{release}
Summary: Programs for manipulating GIF format image files
Group: Applications/Multimedia
Requires: %{name} = %{version}-%{release}
Provides: libungif-progs = %{version}-%{release}
Obsoletes: libungif-progs <= %{version}-%{release}
%description utils
The giflib-utils package contains various programs for manipulating
GIF format image files.
Install this package if you need to manipulate GIF format image files.
You'll also need to install the giflib package.
The giflib-utils package contains various programs for manipulating GIF
format image files. Install it if you need to manipulate GIF format image
files.
%prep
%setup -q
%patch0 -p1 -b .amd64
%{__sed} -i 's/\r//' doc/lzgif.txt
%patch0 -p1 -b .hash64
%patch1 -p1 -b .colormap
%build
%configure
make %{?_smp_mflags} all
MAJOR=`echo '%{version}' | sed 's/\([0-9]\+\)\..*/\1/'`
# Handling of libungif compatibility
MAJOR=`echo '%{version}' | sed -e 's/\([0-9]\+\)\..*/\1/'`
%{__cc} $RPM_OPT_FLAGS -shared -Wl,-soname,libungif.so.$MAJOR -Llib/.libs -lgif -o libungif.so.%{version}
%install
rm -rf ${RPM_BUILD_ROOT}
rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT INSTALL='install -p' install
make install DESTDIR=$RPM_BUILD_ROOT
# Handling of libungif compatibility
install -p -m 755 libungif.so.%{version} $RPM_BUILD_ROOT%{_libdir}
ln -sf libungif.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libungif.so.4
ln -sf libungif.so.4 $RPM_BUILD_ROOT%{_libdir}/libungif.so
install -m 0755 -p libungif.so.%{version} $RPM_BUILD_ROOT%{_libdir}
ln -sf libungif.so.%{version} ${RPM_BUILD_ROOT}%{_libdir}/libungif.so.4
ln -sf libungif.so.4 ${RPM_BUILD_ROOT}%{_libdir}/libungif.so
# Don't install any static .a and libtool .la files
rm -f $RPM_BUILD_ROOT%{_libdir}/*.{a,la}
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
# Remove makefile relics from documentation
rm -f doc/Makefile*
# Correct wrong line ending
sed -e 's/\r//' doc/lzgif.txt > doc/lzgif.txt.new
touch -c -r doc/lzgif.txt doc/lzgif.txt.new
mv -f doc/lzgif.txt.new doc/lzgif.txt
%clean
rm -rf ${RPM_BUILD_ROOT}
rm -rf $RPM_BUILD_ROOT
%post -p /sbin/ldconfig
@ -84,14 +85,12 @@ rm -rf ${RPM_BUILD_ROOT}
%files
%defattr(-,root,root,-)
%doc COPYING README NEWS ONEWS
%doc ChangeLog TODO BUGS AUTHORS
%doc AUTHORS ChangeLog COPYING NEWS README
%{_libdir}/lib*.so.*
%files devel
%defattr(-,root,root,-)
%doc doc/* util/giffiltr.c util/gifspnge.c
%{_libdir}/lib*.a
%{_libdir}/lib*.so
%{_includedir}/*.h
@ -100,6 +99,12 @@ rm -rf ${RPM_BUILD_ROOT}
%{_bindir}/*
%changelog
* Sat May 16 2009 Robert Scheck <robert@fedoraproject.org> 4.1.3-10
- CVE-2005-2974: NULL pointer dereference crash (#494826)
- CVE-2005-3350: Memory corruption via a crafted GIF (#494823)
- Solved multilib problems with documentation (#465208, #474538)
- Removed static library from giflib-devel package (#225796 #c1)
* Tue Feb 19 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 4.1.3-9
- Autorebuild for GCC 4.3