[njam] Fix a crash on a very long SDL_VIDEODRIVER env variable (rhbz#767015)
Hans de Goede
jwrdegoede at fedoraproject.org
Tue Dec 13 19:37:31 UTC 2011
commit 9b94e228129c7b70d2c27d828e058df18e86d742
Author: Hans de Goede <hdegoede at redhat.com>
Date: Tue Dec 13 20:38:49 2011 +0100
Fix a crash on a very long SDL_VIDEODRIVER env variable (rhbz#767015)
njam-1.25-rhbz767015.patch | 100 ++++++++++++++++++++++++++++++++++++++++++++
njam.spec | 28 ++++++-------
2 files changed, 113 insertions(+), 15 deletions(-)
---
diff --git a/njam-1.25-rhbz767015.patch b/njam-1.25-rhbz767015.patch
new file mode 100644
index 0000000..955d3df
--- /dev/null
+++ b/njam-1.25-rhbz767015.patch
@@ -0,0 +1,100 @@
+diff -up njam-1.25-src/src/njam.cpp~ njam-1.25-src/src/njam.cpp
+--- njam-1.25-src/src/njam.cpp~ 2011-12-13 20:18:40.000000000 +0100
++++ njam-1.25-src/src/njam.cpp 2011-12-13 20:29:08.795427328 +0100
+@@ -55,7 +55,6 @@ int main(int argc, char *argv[])
+ {
+ bool Fullscreen = true;
+ bool SWSurface = true;
+- bool UseDGA = false;
+ gid_t realgid;
+
+ highscore_fp = fopen("/var/lib/games/njam.hs", "r+");
+@@ -76,8 +75,6 @@ int main(int argc, char *argv[])
+ Fullscreen = false; // use njam.exe -w windowed mode
+ else if (argv[i][1] == 'h')
+ SWSurface = false; // use -h for hardware surfaces
+- else if (argv[i][1] == 'd')
+- UseDGA = true;
+ else
+ ok = false;
+ }
+@@ -89,7 +86,6 @@ int main(int argc, char *argv[])
+ printf("Usage: njam -[w|d|h]\n\n");
+ printf("-w start in Windowed mode (as opposed to fullscreen).\n");;
+ printf("-h use Hardware surfaces (faster, doesn't work well with all graphic cards).\n");
+- printf("-d use DGA driver on Linux, (much faster, but must run as root).\n");
+ return 1;
+ }
+ }
+@@ -118,7 +114,7 @@ int main(int argc, char *argv[])
+ #endif
+
+ NjamEngine Engine;
+- if (!Engine.Init(Fullscreen, SWSurface, UseDGA))
++ if (!Engine.Init(Fullscreen, SWSurface))
+ {
+ LogFile("Failed.\n");
+ return 1;
+@@ -171,12 +167,6 @@ NjamEngine::NjamEngine()
+ //-----------------------------------------------------------------------------
+ NjamEngine::~NjamEngine()
+ {
+-#ifdef __linux__
+- char bufsdl[30];
+- sprintf(bufsdl, "SDL_VIDEODRIVER=%s", linux_sdl_driver);
+- putenv(bufsdl);
+-#endif
+-
+ if (script_file)
+ fclose(script_file);
+
+@@ -345,7 +335,7 @@ void NjamEngine::DoScript(void) // load
+ }
+ }
+ //-----------------------------------------------------------------------------
+-bool NjamEngine::Init(bool Fullscreen, bool SoftwareSurface, bool UseDGA)
++bool NjamEngine::Init(bool Fullscreen, bool SoftwareSurface)
+ {
+ #ifdef __linux__
+ // Check if $HOME/.njam-levels exists and if it doesn't create it
+@@ -353,20 +343,6 @@ bool NjamEngine::Init(bool Fullscreen, b
+ char *home = NjamGetHomeDir();
+ snprintf(buf, sizeof(buf), "%s/.njam-levels", home? home:"");
+ NjamCheckAndCreateDir(buf);
+-
+- sprintf(linux_sdl_driver, "x11\0");
+- char *driver_name = getenv("SDL_VIDEODRIVER");
+- if (driver_name)
+- sprintf(linux_sdl_driver, "%s\0", driver_name);
+-
+- if (UseDGA)
+- {
+- printf("You must be root to run DGA\nType ./njam -? for help\n");
+- putenv("SDL_VIDEODRIVER=dga");
+- }
+-#else
+- if (UseDGA)
+- printf("Parameter -d is ignored for non-Linux platforms.\n");
+ #endif
+
+ LogFile("Initializing SDL: VIDEO & AUDIO...", true);
+diff -up njam-1.25-src/src/njam.h~ njam-1.25-src/src/njam.h
+--- njam-1.25-src/src/njam.h~ 2011-12-13 20:18:40.000000000 +0100
++++ njam-1.25-src/src/njam.h 2011-12-13 20:29:31.131148076 +0100
+@@ -112,7 +112,6 @@ private:
+
+ bool m_SDL; // whether SDL is initialized or not
+ bool m_AudioAvailable; // so we know wheter to try to play music/sfx
+- char linux_sdl_driver[10];
+ SDL_Surface *m_Screen;
+
+ tGameOptions m_GameOptions;
+@@ -202,7 +201,7 @@ private:
+ public:
+ NjamEngine();
+ ~NjamEngine();
+- bool Init(bool,bool,bool); // initialize everything except for networking
++ bool Init(bool,bool); // initialize everything except for networking
+ void Start(); // start the music and main menu loop
+ };
+ //-----------------------------------------------------------------------------
diff --git a/njam.spec b/njam.spec
index b024f46..a9c76a4 100644
--- a/njam.spec
+++ b/njam.spec
@@ -1,6 +1,6 @@
Name: njam
Version: 1.25
-Release: 13%{?dist}
+Release: 14%{?dist}
Summary: Maze-game, eat all the cookies while avoiding the badguys
Group: Amusements/Games
License: GPLv2+
@@ -15,7 +15,7 @@ Patch0: njam-1.25-drop-setgid.patch
Patch1: njam-1.25-html.patch
Patch2: njam-1.25-leveledit.patch
Patch3: njam-1.25-gcc45.patch
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Patch4: njam-1.25-rhbz767015.patch
BuildRequires: SDL-devel SDL_mixer-devel SDL_image-devel SDL_net-devel
BuildRequires: ImageMagick desktop-file-utils
Requires: hicolor-icon-theme
@@ -34,6 +34,7 @@ level skins, many different levels and an integrated level editor.
%patch1 -p1
%patch2 -p1 -z .leveledit
%patch3 -p1
+%patch4 -p1
%build
@@ -43,7 +44,6 @@ convert -transparent black njamicon.ico %{name}.png
%install
-rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
# make install installs the docs under /usr/share/njam. We want them in %doc.
@@ -74,25 +74,20 @@ install -p -m 644 %{name}.png \
$RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/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,-)
%doc COPYING ChangeLog NEWS README TODO levels/readme.txt html
%attr(2755,root,games) %{_bindir}/%{name}
%{_datadir}/%{name}
@@ -103,6 +98,9 @@ fi
%changelog
+* Tue Dec 11 2011 Hans de Goede <hdegoede at redhat.com> - 1.25-14
+- Fix a crash on a very long SDL_VIDEODRIVER env variable (rhbz#767015)
+
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.25-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
More information about the scm-commits
mailing list