[raidem] Fix zziplib zzip_freopen abuse (fixes crash on startup, rhbz#710190)
Hans de Goede
jwrdegoede at fedoraproject.org
Sat Jul 16 12:16:38 UTC 2011
commit d1f241e85c1479947d3063645e126a1ec7ab6480
Author: Hans de Goede <hdegoede at redhat.com>
Date: Sat Jul 16 14:17:28 2011 +0200
Fix zziplib zzip_freopen abuse (fixes crash on startup, rhbz#710190)
raidem-0.3.1-zziplib.patch | 46 ++++++++++++++++++++++++++++++++++++++++++++
raidem.spec | 27 ++++++++++++-------------
2 files changed, 59 insertions(+), 14 deletions(-)
---
diff --git a/raidem-0.3.1-zziplib.patch b/raidem-0.3.1-zziplib.patch
new file mode 100644
index 0000000..1de5f3c
--- /dev/null
+++ b/raidem-0.3.1-zziplib.patch
@@ -0,0 +1,46 @@
+--- raidem-0.3.1-src/src/seborrhea/dirlist-zzip.m 2005-09-01 17:37:17.000000000 +0200
++++ raidem.new/src/seborrhea/dirlist-zzip.m 2011-07-16 14:10:24.116200214 +0200
+@@ -68,9 +68,16 @@
+
+ - (void *) openFile:(const char *)filename
+ {
++ ZZIP_FILE *fp;
+ assert(filename);
+- zfp = zzip_freopen(filename, "rti", zfp);
+- return zfp;
++
++ if (zfp == NULL) {
++ zfp = zzip_fopen(filename, "rti");
++ return zfp;
++ }
++
++ fp = zzip_freopen(filename, "rtiq", zfp);
++ return fp;
+ }
+
+ - (void) closeFile:(void *)file
+@@ -85,19 +92,21 @@
+
+ - (void *) openFile:(const char *)filename :(unsigned int)index :(void **)buffer :(unsigned int *)buffer_size
+ {
++ ZZIP_FILE *fp;
+ zzip_size_t read_size;
+ assert(filename && buffer && buffer_size);
+
+- zfp = zzip_freopen(filename, "rbi", zfp);
+- if (not zfp)
++ fp = [self openFile:filename];
++ if (not fp)
+ return NULL;
+
+ *buffer_size = entries[index].st_size;
+ *buffer = malloc(*buffer_size);
+ assert(*buffer);
+
+- read_size = zzip_fread(*buffer, 1, *buffer_size, zfp);
++ read_size = zzip_fread(*buffer, 1, *buffer_size, fp);
+ assert(read_size == *buffer_size);
++ [self closeFile:fp];
+ return *buffer;
+ }
+ @end
diff --git a/raidem.spec b/raidem.spec
index 4299f4e..b444fc9 100644
--- a/raidem.spec
+++ b/raidem.spec
@@ -1,6 +1,6 @@
Name: raidem
Version: 0.3.1
-Release: 15%{?dist}
+Release: 16%{?dist}
Summary: 2d top-down shoot'em up
Group: Amusements/Games
License: zlib
@@ -11,7 +11,7 @@ Source0: %{name}-%{version}-src.zip
Source1: raidem.png
Source2: raidem.desktop
Patch0: raidem-0.3.1-syslibs.patch
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Patch1: raidem-0.3.1-zziplib.patch
BuildRequires: gcc-objc glyph-keeper-allegro-devel freetype-devel adime-devel
BuildRequires: zziplib-devel libpng-devel AllegroOGG-devel
BuildRequires: automake desktop-file-utils
@@ -29,6 +29,7 @@ fun.
%prep
%setup -q -n %{name}-%{version}-src
%patch0 -p1 -z .syslibs
+%patch1 -p1
# remove all included system libs, to avoid using the included system headers.
mv lib/loadpng .
rm -fr lib/*
@@ -44,7 +45,6 @@ make %{?_smp_mflags}
%install
-rm -rf $RPM_BUILD_ROOT
# DIY, since the Makefile uses install -s and install -g games, etc.
# Fixable but this is easier
mkdir -p $RPM_BUILD_ROOT%{_bindir}
@@ -62,22 +62,18 @@ install -p -m 644 %{SOURCE1} \
$RPM_BUILD_ROOT%{_datadir}/icons/hicolor/48x48/apps
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-
%post
-touch --no-create %{_datadir}/icons/hicolor || :
-if [ -x %{_bindir}/gtk-update-icon-cache ]; then
- %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
-fi
+touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
%postun
-touch --no-create %{_datadir}/icons/hicolor || :
-if [ -x %{_bindir}/gtk-update-icon-cache ]; then
- %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
+if [ $1 -eq 0 ] ; then
+ touch --no-create %{_datadir}/icons/hicolor &>/dev/null
+ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
fi
+%posttrans
+gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+
%files
%defattr(-,root,root,-)
@@ -89,6 +85,9 @@ fi
%changelog
+* Sat Jul 16 2011 Hans de Goede <hdegoede at redhat.com> - 0.3.1-16
+- Fix zziplib zzip_freopen abuse (fixes crash on startup, rhbz#710190)
+
* Thu Jul 14 2011 Bruno Wolff III <bruno at wolff.to> - 0.3.1-15
- Rebuild for allegro 4.4 and glyph-keeper
- Use the new glyph-keeper subpackage glyph-keeper-allegro-devel
More information about the scm-commits
mailing list