diff --git a/7kaa-2.14.5.patch b/7kaa-2.14.5.patch new file mode 100644 index 0000000..0b587bc --- /dev/null +++ b/7kaa-2.14.5.patch @@ -0,0 +1,64 @@ +diff -ruB 7kaa-2.14.5.orig/src/client/OFIRMIF.cpp 7kaa-2.14.5/src/client/OFIRMIF.cpp +--- 7kaa-2.14.5.orig/src/client/OFIRMIF.cpp 2015-05-19 03:00:20.000000000 +0200 ++++ 7kaa-2.14.5/src/client/OFIRMIF.cpp 2015-09-25 16:23:43.405735779 +0200 +@@ -491,7 +491,7 @@ + x = INFO_X1+6+i%4*50; + y = pop_disp_y1+1+i/4*29; + +- switch( mouse.single_click(x, y, x+27, y+23, 2) ) ++ switch( mouse.any_click(x, y, x+27, y+23, LEFT_BUTTON) ? 1 : (mouse.any_click(x, y, x+27, y+23, RIGHT_BUTTON) ? 2 : 0) ) + { + case 1: // left button to select worker + selected_worker_id = i+1; +diff -ruB 7kaa-2.14.5.orig/src/client/OF_BASE.cpp 7kaa-2.14.5/src/client/OF_BASE.cpp +--- 7kaa-2.14.5.orig/src/client/OF_BASE.cpp 2015-05-19 03:00:20.000000000 +0200 ++++ 7kaa-2.14.5/src/client/OF_BASE.cpp 2015-09-25 17:05:59.616753330 +0200 +@@ -238,8 +238,8 @@ + + //------ detect the overseer button -----// + +- int rc = mouse.single_click(INFO_X1+6, INFO_Y1+58, +- INFO_X1+5+UNIT_LARGE_ICON_WIDTH, INFO_Y1+57+UNIT_LARGE_ICON_HEIGHT, 2 ); ++ int rc = mouse.any_click(INFO_X1+6, INFO_Y1+58, INFO_X1+5+UNIT_LARGE_ICON_WIDTH, INFO_Y1+57+UNIT_LARGE_ICON_HEIGHT, LEFT_BUTTON) ? 1 ++ : mouse.any_click(INFO_X1+6, INFO_Y1+58, INFO_X1+5+UNIT_LARGE_ICON_WIDTH, INFO_Y1+57+UNIT_LARGE_ICON_HEIGHT, RIGHT_BUTTON) ? 2 : 0; + + if( rc==1 ) // display this overseer's info + { +diff -ruB 7kaa-2.14.5.orig/src/client/OF_CAMP.cpp 7kaa-2.14.5/src/client/OF_CAMP.cpp +--- 7kaa-2.14.5.orig/src/client/OF_CAMP.cpp 2015-05-19 03:00:20.000000000 +0200 ++++ 7kaa-2.14.5/src/client/OF_CAMP.cpp 2015-09-25 17:07:32.962237653 +0200 +@@ -421,8 +421,8 @@ + + //------ detect the overseer button -----// + +- int rc = mouse.single_click(INFO_X1+6, INFO_Y1+58, +- INFO_X1+5+UNIT_LARGE_ICON_WIDTH, INFO_Y1+57+UNIT_LARGE_ICON_HEIGHT, 2 ); ++ int rc = mouse.any_click(INFO_X1+6, INFO_Y1+58, INFO_X1+5+UNIT_LARGE_ICON_WIDTH, INFO_Y1+57+UNIT_LARGE_ICON_HEIGHT, LEFT_BUTTON) ? 1 ++ : mouse.any_click(INFO_X1+6, INFO_Y1+58, INFO_X1+5+UNIT_LARGE_ICON_WIDTH, INFO_Y1+57+UNIT_LARGE_ICON_HEIGHT, RIGHT_BUTTON) ? 2 : 0; + + if( rc==1 ) // display this overseer's info + { +diff -ruB 7kaa-2.14.5.orig/src/client/OF_MARK.cpp 7kaa-2.14.5/src/client/OF_MARK.cpp +--- 7kaa-2.14.5.orig/src/client/OF_MARK.cpp 2015-05-19 03:00:20.000000000 +0200 ++++ 7kaa-2.14.5/src/client/OF_MARK.cpp 2015-09-25 16:22:12.651232950 +0200 +@@ -814,7 +814,7 @@ + } + else + { +- market_product_array[marketGoods->raw_id-1] = NULL; ++ market_product_array[marketGoods->product_raw_id-1] = NULL; + marketGoods->product_raw_id = 0; + } + } +diff -ruB 7kaa-2.14.5.orig/src/client/OVOLUME.cpp 7kaa-2.14.5/src/client/OVOLUME.cpp +--- 7kaa-2.14.5.orig/src/client/OVOLUME.cpp 2015-05-19 03:00:20.000000000 +0200 ++++ 7kaa-2.14.5/src/client/OVOLUME.cpp 2015-09-25 16:24:29.805481641 +0200 +@@ -70,7 +70,7 @@ + long absY = posVolume.y >= 0 ? posVolume.y : -posVolume.y; + long dist = absX >= absY ? absX :absY; + if( dist <= DEFAULT_DIST_LIMIT ) +- rel_vol = rel_vol = 100 - dist * 100 / DEFAULT_VOL_DROP; ++ rel_vol = 100 - dist * 100 / DEFAULT_VOL_DROP; + else + rel_vol = 0; + diff --git a/7kaa-2.14.5.tar.bz2 b/7kaa-2.14.5.tar.bz2 new file mode 100644 index 0000000..cc62cb1 --- /dev/null +++ b/7kaa-2.14.5.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:185308f54c829cde51a5a15231def904b8737e2a1502fa5469a2724ed0fa17a5 +size 38473819 diff --git a/7kaa-2.14.5_overflow.patch b/7kaa-2.14.5_overflow.patch new file mode 100644 index 0000000..fb82054 --- /dev/null +++ b/7kaa-2.14.5_overflow.patch @@ -0,0 +1,30 @@ +diff -ur 7kaa-2.14.5/src/client/OGAMEMP.cpp 7kaa-2.14.5_fix/src/client/OGAMEMP.cpp +--- 7kaa-2.14.5/src/client/OGAMEMP.cpp 2015-05-19 03:00:20.000000000 +0200 ++++ 7kaa-2.14.5_fix/src/client/OGAMEMP.cpp 2015-09-29 17:05:01.007513932 +0200 +@@ -4966,7 +4966,7 @@ + String str; + + snprintf(str, +- 255, ++ MAX_STR_LEN+1, + ngettext("This multiplayer saved game needs %d human players while now there is only %d human player.", + "This multiplayer saved game needs %d human players while now there are only %d human players.", + regPlayerCount), +@@ -5123,7 +5123,7 @@ + String str; + + snprintf(str, +- 255, ++ MAX_STR_LEN+1, + ngettext("This multiplayer saved game needs %d human players while now there is only %d human player.", + "This multiplayer saved game needs %d human players while now there are only %d human players.", + playerCount), +@@ -5141,7 +5141,7 @@ + { + String str; + +- snprintf(str, 255, _("This multiplayer saved game can only support %d human players while now there are %d human players. The game cannot start."), maxPlayer, playerCount); ++ snprintf(str, MAX_STR_LEN+1, _("This multiplayer saved game can only support %d human players while now there are %d human players. The game cannot start."), maxPlayer, playerCount); + + box.msg(str); + return 0; diff --git a/7kaa-source-2.14.4.tar.bz2 b/7kaa-source-2.14.4.tar.bz2 deleted file mode 100644 index d25bce0..0000000 --- a/7kaa-source-2.14.4.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:60b61f321db6c295330fb3fb21894bc41cb6e0bd797aff9abe45cf2392b49fa1 -size 27366752 diff --git a/7kaa.changes b/7kaa.changes index 662a6f2..ae7a558 100644 --- a/7kaa.changes +++ b/7kaa.changes @@ -1,3 +1,31 @@ +------------------------------------------------------------------- +Tue Sep 29 15:06:37 UTC 2015 - opensuse@dstoecker.de + +- patch buffer overflow (7kaa-2.14.5_overflow.patch) + +------------------------------------------------------------------- +Fri Sep 25 18:32:04 UTC 2015 - nemysis@openSUSE.org + +- Update to 2.14.5, announce message: + + * Switched to using SDL2. + * Gained support for full-screen stretching. + * Gained support for MacOS. + * Switched to using enet, replacing SDL_net. + * Audio code improvements. + * The multiplayer connection code has stablized. + * New game hotkeys. + * Migrate population across extended town networks. + * Added ability to migrate 10 people at a time across between towns. + * Gettext translation support. + * Several bug fixes. + +- Add patch 7kaa-2.14.5.patch, - fix build +- Remove BuildRequires for desktop-file-utils +- Add BuildRequires, changed by Upstream for enet-devel and sdl2 +- Remove BuildRequires, changed by Upstream for SDL_net and sdl +- Fix build with gcc5, add CXXFLAGS="%{optflags} -fno-strict-aliasing" + ------------------------------------------------------------------- Fri Nov 7 17:04:26 UTC 2014 - nemysis@gmx.ch diff --git a/7kaa.spec b/7kaa.spec index 7706170..12704e2 100644 --- a/7kaa.spec +++ b/7kaa.spec @@ -1,7 +1,7 @@ # # spec file for package 7kaa # -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,25 +19,29 @@ # See also http://en.opensuse.org/openSUSE:Specfile_guidelines Name: 7kaa -Version: 2.14.4 +Version: 2.14.5 Release: 0 Summary: Seven Kingdoms: Ancient Adversaries License: GPL-2.0 Group: Amusements/Games/StrategyGame Url: http://7kfans.com/ -Source0: http://sourceforge.net/projects/skfans/files/7KAA%20%{version}/%{name}-source-%{version}.tar.bz2 +Source0: http://sourceforge.net/projects/skfans/files/7KAA%20%{version}/%{name}-%{version}.tar.bz2 +# PATCH-FIX-OPENSUSE - 7kaa-2.14.5.patch -- https://github.com/the3dfxdude/7kaa/issues/48 +Patch0: %{name}-2.14.5.patch +# PATCH-FIX-UPSTREAM - patch buffer overflow due to wrong size assumptions +Patch1: %{name}-2.14.5_overflow.patch Source1: %{name}.png Source2: %{name}.desktop %if 0%{?suse_version} -BuildRequires: desktop-file-utils BuildRequires: fdupes BuildRequires: update-desktop-files %endif +BuildRequires: enet-devel BuildRequires: gcc-c++ BuildRequires: openal-soft-devel -BuildRequires: pkgconfig(SDL_net) -BuildRequires: pkgconfig(sdl) +BuildRequires: pkgconfig(sdl2) Recommends: %{name}-music +BuildRoot: %{_tmppath}/%{name}-%{version}-build %description Seven Kingdoms made departures from the traditional real-time strategy models @@ -58,8 +62,11 @@ the GPL v2. %prep %setup -q +%patch0 -p1 +%patch1 -p1 %build +export CXXFLAGS="%{optflags} -fno-strict-aliasing" %configure --docdir=%{_docdir}/%{name} make %{?_smp_mflags} @@ -73,12 +80,12 @@ install -Dm 0644 %{S:1} %{buildroot}%{_datadir}/pixmaps/%{name}.png install -Dm 0644 %{S:2} %{buildroot}%{_datadir}/applications/%{name}.desktop %if 0%{?suse_version} -%suse_update_desktop_file %{name} -%fdupes %{buildroot}%{_prefix} + %suse_update_desktop_file %{name} + %fdupes -s %{buildroot}%{_prefix} %endif %files -%defattr(-,root,root,-) +%defattr(-,root,root) %doc COPYING README %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop