quake3: add botlib patch for amd64

botlib abuses strcpy (source and dest overlap), and the strcpy function for 64
bit intel CPU's in the latest glibc, does not like this causing the bots to not
load.
This commit is contained in:
Tobias Geerinckx-Rice 2015-07-14 00:57:06 +02:00
parent 37e08681ee
commit b825befbdb
2 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,51 @@
Retrieved from https://bugzilla.icculus.org/show_bug.cgi?id=4331,
removed path prefix.
-- nckx <tobias.geerinckx.rice@gmail.com>
PATCH: Bots don't work on 64 bit Intel CPU's
botlib abuses strcpy (source and dest overlap), and the strcpy function for 64
bit intel CPU's in the latest glibc, does not like this causing the bots to not
load.
The attached patch fixes this.
Note this patch should be credited to: Andreas Bierfert (andreas.bierfert at
lowlatency.de)
See: http://bugzilla.redhat.com/show_bug.cgi?id=526338
diff -up quake3-1.36/code/botlib/l_precomp.c~ quake3-1.36/code/botlib/l_precomp.c
--- code/botlib/l_precomp.c~ 2009-04-27 08:42:37.000000000 +0200
+++ code/botlib/l_precomp.c 2009-11-03 21:03:08.000000000 +0100
@@ -948,7 +948,7 @@ void PC_ConvertPath(char *path)
if ((*ptr == '\\' || *ptr == '/') &&
(*(ptr+1) == '\\' || *(ptr+1) == '/'))
{
- strcpy(ptr, ptr+1);
+ memmove(ptr, ptr+1, strlen(ptr));
} //end if
else
{
diff -up quake3-1.36/code/botlib/l_script.c~ quake3-1.36/code/botlib/l_script.c
--- code/botlib/l_script.c~ 2009-04-27 08:42:37.000000000 +0200
+++ code/botlib/l_script.c 2009-11-03 21:06:11.000000000 +0100
@@ -1118,7 +1118,7 @@ void StripDoubleQuotes(char *string)
{
if (*string == '\"')
{
- strcpy(string, string+1);
+ memmove(string, string+1, strlen(string));
} //end if
if (string[strlen(string)-1] == '\"')
{
@@ -1135,7 +1135,7 @@ void StripSingleQuotes(char *string)
{
if (*string == '\'')
{
- strcpy(string, string+1);
+ memmove(string, string+1, strlen(string));
} //end if
if (string[strlen(string)-1] == '\'')
{

View File

@ -20,6 +20,9 @@ stdenv.mkDerivation {
# Do an exit() instead of _exit(). This is nice for gcov. # Do an exit() instead of _exit(). This is nice for gcov.
# Upstream also seems to do this. # Upstream also seems to do this.
./exit.patch ./exit.patch
# No bots on amd64 without this patch.
./botlib.patch
]; ];
buildInputs = [ x11 SDL mesa openal gcc46 ]; buildInputs = [ x11 SDL mesa openal gcc46 ];