[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