[raidem/f15] Fix zziplib zzip_freopen abuse (fixes crash on startup, rhbz#710190)
Hans de Goede
jwrdegoede at fedoraproject.org
Sat Jul 16 12:24:15 UTC 2011
commit f8f19b64c3c9a808e007d8198156f8c2d46245c8
Author: Hans de Goede <hdegoede at redhat.com>
Date: Sat Jul 16 14:25:25 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 939ad97..491b72b 100644
--- a/raidem.spec
+++ b/raidem.spec
@@ -1,6 +1,6 @@
Name: raidem
Version: 0.3.1
-Release: 14%{?dist}
+Release: 15%{?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-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-15
+- Fix zziplib zzip_freopen abuse (fixes crash on startup, rhbz#710190)
+
* Wed Feb 23 2011 Bruno Wolff III <bruno at wolff.to> - 0.3.1-14
- Build against gcc-4.6.0-0.9.fc15 to get fix for bug 678928
More information about the scm-commits
mailing list