Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 1 Jun 2006 14:11:38 -0300
From:      "Alejandro Pulver" <alepulver@FreeBSD.org>
To:        "FreeBSD gnats submit" <FreeBSD-gnats-submit@FreeBSD.org>
Subject:   ports/98296: [UPDATE] games/quake3: update to 1.32c (security patch)
Message-ID:  <1149181898.11880@phobos.mars.bsd>
Resent-Message-ID: <200606011720.k51HKDCc058228@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         98296
>Category:       ports
>Synopsis:       [UPDATE] games/quake3: update to 1.32c (security patch)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jun 01 17:20:13 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Alejandro Pulver
>Release:        FreeBSD 6.0-RELEASE-p6 i386
>Organization:
>Environment:


System: FreeBSD 6.0-RELEASE-p6 #0: Tue Apr  4 22:29:05 ART 2006
    ale@phobos.mars.bsd:/usr/src/sys/i386/compile/ATHLON-PHOBOS



>Description:


- Update to version 1.32c (security patch, see below).
- Make portlint happy.
- Allow building the VM on PowerPC.
- Fix a typo in option detection code (&& -> ||).
- Fix 2 security vulnerabilities (see CVE-2006-2082). This patch was taken from q3icculus.


>How-To-Repeat:





>Fix:


--- quake3.diff begins here ---
Index: Makefile
===================================================================
RCS file: /home/pcvs/ports/games/quake3/Makefile,v
retrieving revision 1.13
diff -u -r1.13 Makefile
--- Makefile	25 May 2006 21:54:08 -0000	1.13
+++ Makefile	1 Jun 2006 02:49:04 -0000
@@ -6,8 +6,7 @@
 #
 
 PORTNAME=	quake3
-PORTVERSION=	1.32b
-PORTREVISION=	5
+PORTVERSION=	1.32c
 CATEGORIES=	games
 MASTER_SITES=	http://www.proarena.com/p/ftpx/x8524/quake_3_arena/ \
 		http://www.planetgargoyle.com/ \
@@ -15,7 +14,7 @@
 		http://0day.icculus.org/mirrors/quake3/ \
 		http://www.olpainless.net/files/ \
 		${MASTER_SITE_IDSOFTWARE:S|$|source/|}
-DISTFILES=	${DISTNAME}-source${EXTRACT_SUFX}
+DISTNAME=	${PORTNAME}-${REALVERSION}-source
 
 MAINTAINER=	shirshegsm@gmail.com
 COMMENT=	Quake III Arena -- first person shooter (native build)
@@ -24,11 +23,12 @@
 USE_DOS2UNIX=	yes
 USE_GMAKE=	yes
 USE_GCC=	3.2+
+WRKSRC=		${WRKDIR}/${PORTNAME}-${REALVERSION}
 BUILD_WRKSRC=	${WRKSRC}/code/unix
 
 OPTIONS=	CLIENT "Build client" on \
 		DEDICATED "Build dedicated server" on \
-		GAMELIBS "Build game libraries (mandatory on !i386)" off \
+		GAMELIBS "Build game libraries (when not mandatory)" off \
 		OPTIMIZED_CFLAGS "Enable compilation optimizations" on \
 		SMP "Build SMP (threaded) client" on
 
@@ -36,6 +36,7 @@
 PLIST_SUB=	LIBDIR="${LIBDIR:S/${PREFIX}\///}"
 
 LIBDIR=		${PREFIX}/lib/${PORTNAME}
+REALVERSION=	1.32b
 
 .include <bsd.port.pre.mk>
 
@@ -45,10 +46,10 @@
 .endif
 
 .if ${ARCH} == "i386"
-BUILD_DEPENDS=	nasm:${PORTSDIR}/devel/nasm
+BUILD_DEPENDS+=	nasm:${PORTSDIR}/devel/nasm
 .endif
 
-.if !defined(WITHOUT_CLIENT) && !defined(WITHOUT_SMP)
+.if !defined(WITHOUT_CLIENT) || !defined(WITHOUT_SMP)
 USE_GL=		yes
 .endif
 
@@ -68,7 +69,7 @@
 PLIST_SUB+=	DEDICATED="@comment "
 .endif
 
-.if defined(WITH_GAMELIBS) || ${ARCH} != "i386"
+.if defined(WITH_GAMELIBS) || (${ARCH} != "i386" && ${ARCH} != "powerpc")
 MAKE_ENV+=	GAMELIBS=YES
 PLIST_SUB+=	GAMELIBS=""
 .else
@@ -94,14 +95,13 @@
 	@${REINPLACE_CMD} -e \
 		's|//[[:blank:]]*\(Swap_Init[[:blank:]]*();\)|\1|' \
 		${WRKSRC}/code/botlib/be_interface.c \
-		${WRKSRC}/code/qcommon/common.c \
 		${WRKSRC}/code/renderer/tr_init.c
 
 do-install:
 .for bin in ${Q3BIN}
 	${INSTALL_PROGRAM} ${BUILD_WRKSRC}/release/${bin} ${PREFIX}/bin
 .endfor
-.if defined(WITH_GAMELIBS) || ${ARCH} != "i386"
+.if defined(WITH_GAMELIBS) || (${ARCH} != "i386" && ${ARCH} != "powerpc")
 .for dir in baseq3 missionpack
 	${MKDIR} ${LIBDIR}/${dir}
 	${INSTALL_PROGRAM} ${BUILD_WRKSRC}/release/${dir}/*.so ${LIBDIR}/${dir}
Index: files/patch-code-cgame-cg_weapons.c
===================================================================
RCS file: files/patch-code-cgame-cg_weapons.c
diff -N files/patch-code-cgame-cg_weapons.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ files/patch-code-cgame-cg_weapons.c	1 Jun 2006 02:49:04 -0000
@@ -0,0 +1,23 @@
+--- ./code/cgame/cg_weapons.c.orig	Wed May 31 18:55:11 2006
++++ ./code/cgame/cg_weapons.c	Wed May 31 19:05:20 2006
+@@ -656,17 +656,17 @@
+ 	}
+ 
+ 	strcpy( path, item->world_model[0] );
+-	COM_StripExtension( path, path );
++	COM_StripExtension( path, path, sizeof(path) );
+ 	strcat( path, "_flash.md3" );
+ 	weaponInfo->flashModel = trap_R_RegisterModel( path );
+ 
+ 	strcpy( path, item->world_model[0] );
+-	COM_StripExtension( path, path );
++	COM_StripExtension( path, path, sizeof(path) );
+ 	strcat( path, "_barrel.md3" );
+ 	weaponInfo->barrelModel = trap_R_RegisterModel( path );
+ 
+ 	strcpy( path, item->world_model[0] );
+-	COM_StripExtension( path, path );
++	COM_StripExtension( path, path, sizeof(path) );
+ 	strcat( path, "_hand.md3" );
+ 	weaponInfo->handsModel = trap_R_RegisterModel( path );
+ 
Index: files/patch-code-client-cl_ui.c
===================================================================
RCS file: /home/pcvs/ports/games/quake3/files/patch-code-client-cl_ui.c,v
retrieving revision 1.1
diff -u -r1.1 patch-code-client-cl_ui.c
--- files/patch-code-client-cl_ui.c	25 May 2006 21:42:29 -0000	1.1
+++ files/patch-code-client-cl_ui.c	1 Jun 2006 02:49:04 -0000
@@ -1,5 +1,5 @@
---- code/client/cl_ui.c.orig	Thu May 25 15:41:27 2006
-+++ code/client/cl_ui.c	Thu May 25 15:46:39 2006
+--- ./code/client/cl_ui.c.orig	Wed May 31 18:55:11 2006
++++ ./code/client/cl_ui.c	Wed May 31 18:55:13 2006
 @@ -1166,7 +1166,7 @@
  		// init for this gamestate
  		VM_Call( uivm, UI_INIT, (cls.state >= CA_AUTHORIZING && cls.state < CA_ACTIVE));
Index: files/patch-code-game-q_shared.c
===================================================================
RCS file: /home/pcvs/ports/games/quake3/files/patch-code-game-q_shared.c,v
retrieving revision 1.1
diff -u -r1.1 patch-code-game-q_shared.c
--- files/patch-code-game-q_shared.c	25 May 2006 21:42:29 -0000	1.1
+++ files/patch-code-game-q_shared.c	1 Jun 2006 02:49:04 -0000
@@ -1,6 +1,33 @@
---- code/game/q_shared.c.orig	Thu May 25 13:42:26 2006
-+++ code/game/q_shared.c	Thu May 25 13:44:30 2006
-@@ -99,29 +99,29 @@
+--- ./code/game/q_shared.c.orig	Wed May 31 18:55:11 2006
++++ ./code/game/q_shared.c	Wed May 31 19:06:32 2006
+@@ -58,13 +58,20 @@
+ COM_StripExtension
+ ============
+ */
+-void COM_StripExtension( const char *in, char *out ) {
+-	while ( *in && *in != '.' ) {
+-		*out++ = *in++;
+-	}
+-	*out = 0;
+-}
++void COM_StripExtension( const char *in, char *out, int destsize ) {
++	int	length;
+ 
++	Q_strncpyz(out, in, destsize);
++
++	length = strlen(out)-1;
++	while (length > 0 && out[length] != '.') {
++		length--;
++		if (out[length] == '/')
++			return;		// no extension
++	}
++	if (length)
++		out[length] = 0;
++}
+ 
+ /*
+ ==================
+@@ -99,29 +106,29 @@
  
  ============================================================================
  */
@@ -45,7 +72,7 @@
  {
  	byte    b1,b2;
  
-@@ -131,12 +131,12 @@
+@@ -131,12 +138,12 @@
  	return (b1<<8) + b2;
  }
  
@@ -60,7 +87,7 @@
  {
  	byte    b1,b2,b3,b4;
  
-@@ -145,15 +145,15 @@
+@@ -145,15 +152,15 @@
  	b3 = (l>>16)&255;
  	b4 = (l>>24)&255;
  
@@ -79,7 +106,7 @@
  {
  	qint64	result;
  
-@@ -199,7 +199,7 @@
+@@ -199,7 +206,7 @@
  Swap_Init
  ================
  */
@@ -88,7 +115,7 @@
  void Swap_Init (void)
  {
  	byte	swaptest[2] = {1,0};
-@@ -229,7 +229,7 @@
+@@ -229,7 +236,7 @@
  	}
  
  }
Index: files/patch-code-game-q_shared.h
===================================================================
RCS file: /home/pcvs/ports/games/quake3/files/patch-code-game-q_shared.h,v
retrieving revision 1.2
diff -u -r1.2 patch-code-game-q_shared.h
--- files/patch-code-game-q_shared.h	25 May 2006 21:42:29 -0000	1.2
+++ files/patch-code-game-q_shared.h	1 Jun 2006 02:49:04 -0000
@@ -1,5 +1,5 @@
---- code/game/q_shared.h.orig	Thu May 25 13:26:31 2006
-+++ code/game/q_shared.h	Thu May 25 13:26:58 2006
+--- ./code/game/q_shared.h.orig	Wed May 31 18:55:11 2006
++++ ./code/game/q_shared.h	Wed May 31 19:06:40 2006
 @@ -150,12 +150,14 @@
  
  #define ID_INLINE __inline 
@@ -102,6 +102,15 @@
  
  #if !( defined __VECTORC )
  void Com_Memset (void* dest, const int val, const size_t count);
+@@ -787,7 +800,7 @@
+ float Com_Clamp( float min, float max, float value );
+ 
+ char	*COM_SkipPath( char *pathname );
+-void	COM_StripExtension( const char *in, char *out );
++void	COM_StripExtension( const char *in, char *out, int destsize );
+ void	COM_DefaultExtension( char *path, int maxSize, const char *extension );
+ 
+ void	COM_BeginParseSession( const char *name );
 @@ -888,18 +901,18 @@
  } qint64;
  
Index: files/patch-code-q3_ui-ui_playermodel.c
===================================================================
RCS file: files/patch-code-q3_ui-ui_playermodel.c
diff -N files/patch-code-q3_ui-ui_playermodel.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ files/patch-code-q3_ui-ui_playermodel.c	1 Jun 2006 02:49:04 -0000
@@ -0,0 +1,11 @@
+--- ./code/q3_ui/ui_playermodel.c.orig	Wed May 31 18:55:11 2006
++++ ./code/q3_ui/ui_playermodel.c	Wed May 31 19:07:38 2006
+@@ -424,7 +424,7 @@
+ 		{
+ 			filelen = strlen(fileptr);
+ 
+-			COM_StripExtension(fileptr,skinname);
++			COM_StripExtension(fileptr, skinname, sizeof(skinname));
+ 
+ 			// look for icon_????
+ 			if (!Q_stricmpn(skinname,"icon_",5))
Index: files/patch-code-q3_ui-ui_players.c
===================================================================
RCS file: files/patch-code-q3_ui-ui_players.c
diff -N files/patch-code-q3_ui-ui_players.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ files/patch-code-q3_ui-ui_players.c	1 Jun 2006 02:49:04 -0000
@@ -0,0 +1,18 @@
+--- ./code/q3_ui/ui_players.c.orig	Wed May 31 18:55:11 2006
++++ ./code/q3_ui/ui_players.c	Wed May 31 19:07:49 2006
+@@ -89,13 +89,13 @@
+ 
+ 	if ( weaponNum == WP_MACHINEGUN || weaponNum == WP_GAUNTLET || weaponNum == WP_BFG ) {
+ 		strcpy( path, item->world_model[0] );
+-		COM_StripExtension( path, path );
++		COM_StripExtension( path, path, sizeof(path) );
+ 		strcat( path, "_barrel.md3" );
+ 		pi->barrelModel = trap_R_RegisterModel( path );
+ 	}
+ 
+ 	strcpy( path, item->world_model[0] );
+-	COM_StripExtension( path, path );
++	COM_StripExtension( path, path, sizeof(path) );
+ 	strcat( path, "_flash.md3" );
+ 	pi->flashModel = trap_R_RegisterModel( path );
+ 
Index: files/patch-code-q3_ui-ui_saveconfig.c
===================================================================
RCS file: files/patch-code-q3_ui-ui_saveconfig.c
diff -N files/patch-code-q3_ui-ui_saveconfig.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ files/patch-code-q3_ui-ui_saveconfig.c	1 Jun 2006 02:49:04 -0000
@@ -0,0 +1,11 @@
+--- ./code/q3_ui/ui_saveconfig.c.orig	Wed May 31 18:55:11 2006
++++ ./code/q3_ui/ui_saveconfig.c	Wed May 31 19:08:05 2006
+@@ -85,7 +85,7 @@
+ 		return;
+ 	}
+ 
+-	COM_StripExtension(saveConfig.savename.field.buffer, configname );
++	COM_StripExtension(saveConfig.savename.field.buffer, configname, sizeof(configname) );
+ 	trap_Cmd_ExecuteText( EXEC_APPEND, va( "writeconfig %s.cfg\n", configname ) );
+ 	UI_PopMenu();
+ }
Index: files/patch-code-qcommon-common.c
===================================================================
RCS file: /home/pcvs/ports/games/quake3/files/patch-code-qcommon-common.c,v
retrieving revision 1.2
diff -u -r1.2 patch-code-qcommon-common.c
--- files/patch-code-qcommon-common.c	23 Nov 2005 12:00:47 -0000	1.2
+++ files/patch-code-qcommon-common.c	1 Jun 2006 02:49:04 -0000
@@ -1,15 +1,15 @@
---- code/qcommon/common.c.orig	Mon Aug 15 23:10:07 2005
-+++ code/qcommon/common.c	Wed Nov 23 10:53:29 2005
+--- ./code/qcommon/common.c.orig	Wed May 31 18:55:11 2006
++++ ./code/qcommon/common.c	Wed May 31 18:55:13 2006
 @@ -24,15 +24,8 @@
  #include "../game/q_shared.h"
  #include "qcommon.h"
  #include <setjmp.h>
 -#ifdef __linux__
-+#include <sys/types.h>
- #include <netinet/in.h>
+-#include <netinet/in.h>
 -#else
 -#if defined(MACOS_X)
--#include <netinet/in.h>
++#include <sys/types.h>
+ #include <netinet/in.h>
 -#else
 -#include <winsock.h>
 -#endif
@@ -17,3 +17,12 @@
  
  int demo_protocols[] =
  { 66, 67, 68, 0 };
+@@ -2367,7 +2360,7 @@
+ 	// cvar and command buffer management
+ 	Com_ParseCommandLine( commandLine );
+ 
+-//	Swap_Init ();
++	Swap_Init ();
+ 	Cbuf_Init ();
+ 
+ 	Com_InitZoneMemory();
Index: files/patch-code-qcommon-files.c
===================================================================
RCS file: /home/pcvs/ports/games/quake3/files/patch-code-qcommon-files.c,v
retrieving revision 1.1
diff -u -r1.1 patch-code-qcommon-files.c
--- files/patch-code-qcommon-files.c	25 May 2006 21:42:29 -0000	1.1
+++ files/patch-code-qcommon-files.c	1 Jun 2006 02:49:04 -0000
@@ -1,5 +1,5 @@
---- code/qcommon/files.c.orig	Thu May 25 16:39:34 2006
-+++ code/qcommon/files.c	Thu May 25 16:41:43 2006
+--- ./code/qcommon/files.c.orig	Wed May 31 18:55:11 2006
++++ ./code/qcommon/files.c	Wed May 31 18:55:13 2006
 @@ -2763,6 +2763,7 @@
  	if (fs_basepath->string[0]) {
  		FS_AddGameDirectory( fs_basepath->string, gameName );
Index: files/patch-code-qcommon-vm.c
===================================================================
RCS file: /home/pcvs/ports/games/quake3/files/patch-code-qcommon-vm.c,v
retrieving revision 1.2
diff -u -r1.2 patch-code-qcommon-vm.c
--- files/patch-code-qcommon-vm.c	27 May 2006 20:57:29 -0000	1.2
+++ files/patch-code-qcommon-vm.c	1 Jun 2006 02:49:04 -0000
@@ -1,5 +1,14 @@
---- code/qcommon/vm.c.orig	Sat May 27 14:56:20 2006
-+++ code/qcommon/vm.c	Sat May 27 15:40:59 2006
+--- ./code/qcommon/vm.c.orig	Wed May 31 18:55:11 2006
++++ ./code/qcommon/vm.c	Wed May 31 19:08:19 2006
+@@ -225,7 +225,7 @@
+ 		return;
+ 	}
+ 
+-	COM_StripExtension( vm->name, name );
++	COM_StripExtension( vm->name, name, sizeof(name) );
+ 	Com_sprintf( symbols, sizeof( symbols ), "vm/%s.map", name );
+ 	len = FS_ReadFile( symbols, (void **)&mapfile );
+ 	if ( !mapfile ) {
 @@ -826,7 +826,7 @@
  
  
Index: files/patch-code-renderer-tr_bsp.c
===================================================================
RCS file: files/patch-code-renderer-tr_bsp.c
diff -N files/patch-code-renderer-tr_bsp.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ files/patch-code-renderer-tr_bsp.c	1 Jun 2006 02:49:04 -0000
@@ -0,0 +1,11 @@
+--- ./code/renderer/tr_bsp.c.orig	Wed May 31 18:55:11 2006
++++ ./code/renderer/tr_bsp.c	Wed May 31 19:09:13 2006
+@@ -1820,7 +1820,7 @@
+ 	Q_strncpyz( s_worldData.name, name, sizeof( s_worldData.name ) );
+ 
+ 	Q_strncpyz( s_worldData.baseName, COM_SkipPath( s_worldData.name ), sizeof( s_worldData.name ) );
+-	COM_StripExtension( s_worldData.baseName, s_worldData.baseName );
++	COM_StripExtension( s_worldData.baseName, s_worldData.baseName , sizeof(s_worldData.baseName));
+ 
+ 	startMarker = ri.Hunk_Alloc(0, h_low);
+ 	c_gridVerts = 0;
Index: files/patch-code-renderer-tr_shader.c
===================================================================
RCS file: files/patch-code-renderer-tr_shader.c
diff -N files/patch-code-renderer-tr_shader.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ files/patch-code-renderer-tr_shader.c	1 Jun 2006 02:49:04 -0000
@@ -0,0 +1,29 @@
+--- ./code/renderer/tr_shader.c.orig	Wed May 31 18:55:11 2006
++++ ./code/renderer/tr_shader.c	Wed May 31 19:09:58 2006
+@@ -92,7 +92,7 @@
+ 
+ 	// remap all the shaders with the given name
+ 	// even tho they might have different lightmaps
+-	COM_StripExtension( shaderName, strippedName );
++	COM_StripExtension( shaderName, strippedName, sizeof(strippedName));
+ 	hash = generateHashValue(strippedName, FILE_HASH_SIZE);
+ 	for (sh = hashTable[hash]; sh; sh = sh->next) {
+ 		if (Q_stricmp(sh->name, strippedName) == 0) {
+@@ -2351,7 +2351,7 @@
+ 		return tr.defaultShader;
+ 	}
+ 
+-	COM_StripExtension( name, strippedName );
++	COM_StripExtension( name, strippedName, sizeof(strippedName) );
+ 
+ 	hash = generateHashValue(strippedName, FILE_HASH_SIZE);
+ 
+@@ -2419,7 +2419,7 @@
+ 		lightmapIndex = LIGHTMAP_BY_VERTEX;
+ 	}
+ 
+-	COM_StripExtension( name, strippedName );
++	COM_StripExtension( name, strippedName, sizeof(strippedName) );
+ 
+ 	hash = generateHashValue(strippedName, FILE_HASH_SIZE);
+ 
Index: files/patch-code-server-sv_client.c
===================================================================
RCS file: files/patch-code-server-sv_client.c
diff -N files/patch-code-server-sv_client.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ files/patch-code-server-sv_client.c	1 Jun 2006 02:49:04 -0000
@@ -0,0 +1,80 @@
+--- code/server/sv_client.c.orig	Wed May 31 23:38:47 2006
++++ code/server/sv_client.c	Wed May 31 23:40:24 2006
+@@ -756,28 +756,58 @@
+ 	int curindex;
+ 	int rate;
+ 	int blockspersnap;
+-	int idPack, missionPack;
++	int idPack, missionPack, unreferenced = 1;
+ 	char errorMessage[1024];
++	char pakbuf[MAX_OSPATH], *pakptr;
++	const char *referencedPaks;
++	int numRefPaks;
+ 
+ 	if (!*cl->downloadName)
+ 		return;	// Nothing being downloaded
+ 
+ 	if (!cl->download) {
+-		// We open the file here
++		// Chop off filename extension.
++		Com_sprintf(pakbuf, sizeof(pakbuf), "%s", cl->downloadName);
++		pakptr = Q_strrchr(pakbuf, '.');
+ 
+-		Com_Printf( "clientDownload: %d : begining \"%s\"\n", cl - svs.clients, cl->downloadName );
++		if (pakptr) {
++			*pakptr = '\0';
+ 
+-		missionPack = FS_idPak(cl->downloadName, "missionpack");
+-		idPack = missionPack || FS_idPak(cl->downloadName, "baseq3");
++			// Check for pk3 filename extension
++			if (!Q_stricmp(pakptr + 1, "pk3")) {
++				referencedPaks = FS_ReferencedPakNames();
+ 
+-		if ( !sv_allowDownload->integer || idPack ||
++				// Check whether the file appears in the list of referenced
++				// paks to prevent downloading of arbitrary files.
++				Cmd_TokenizeString(referencedPaks);
++				numRefPaks = Cmd_Argc();
++
++				for (curindex = 0; curindex < numRefPaks; curindex++) {
++					if (!FS_FilenameCompare(Cmd_Argv(curindex), pakbuf)) {
++						unreferenced = 0;
++
++						// now that we know the file is referenced,
++						// check whether it's legal to download it.
++						missionPack = FS_idPak(pakbuf, "missionpack");
++						idPack = missionPack || FS_idPak(pakbuf, BASEGAME);
++
++						break;
++					}
++				}
++			}
++		}
++
++		// We open the file here
++		if ( !sv_allowDownload->integer || idPack || unreferenced ||
+ 			( cl->downloadSize = FS_SV_FOpenFileRead( cl->downloadName, &cl->download ) ) <= 0 ) {
+ 			// cannot auto-download file
+-			if (idPack) {
++			if (unreferenced) {
++				Com_sprintf(errorMessage, sizeof(errorMessage), "File \"%s\" is not referenced and cannot be downloaded.", cl->downloadName);
++			} else if (idPack) {
+ 				Com_Printf("clientDownload: %d : \"%s\" cannot download id pk3 files\n", cl - svs.clients, cl->downloadName);
+ 				if (missionPack) {
+ 					Com_sprintf(errorMessage, sizeof(errorMessage), "Cannot autodownload Team Arena file \"%s\"\n"
+-									"The Team Arena mission pack can be found in your local game store.", cl->downloadName);
++					    "The Team Arena mission pack can be found in your local game store.", cl->downloadName);
+ 				}
+ 				else {
+ 					Com_sprintf(errorMessage, sizeof(errorMessage), "Cannot autodownload id pk3 file \"%s\"", cl->downloadName);
+@@ -808,7 +838,9 @@
+ 			*cl->downloadName = 0;
+ 			return;
+ 		}
+- 
++
++		Com_Printf( "clientDownload: %d : beginning \"%s\"\n", cl - svs.clients, cl->downloadName );
++
+ 		// Init
+ 		cl->downloadCurrentBlock = cl->downloadClientBlock = cl->downloadXmitBlock = 0;
+ 		cl->downloadCount = 0;
Index: files/patch-code-ui-ui_main.c
===================================================================
RCS file: files/patch-code-ui-ui_main.c
diff -N files/patch-code-ui-ui_main.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ files/patch-code-ui-ui_main.c	1 Jun 2006 02:49:04 -0000
@@ -0,0 +1,11 @@
+--- ./code/ui/ui_main.c.orig	Wed May 31 18:55:11 2006
++++ ./code/ui/ui_main.c	Wed May 31 19:10:12 2006
+@@ -4988,7 +4988,7 @@
+ 		{
+ 			filelen = strlen(fileptr);
+ 
+-			COM_StripExtension(fileptr,skinname);
++			COM_StripExtension(fileptr, skinname, sizeof(skinname));
+ 
+ 			// look for icon_????
+ 			if (Q_stricmpn(skinname, "icon_", 5) == 0 && !(Q_stricmp(skinname,"icon_blue") == 0 || Q_stricmp(skinname,"icon_red") == 0))
Index: files/patch-code-ui-ui_players.c
===================================================================
RCS file: files/patch-code-ui-ui_players.c
diff -N files/patch-code-ui-ui_players.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ files/patch-code-ui-ui_players.c	1 Jun 2006 02:49:04 -0000
@@ -0,0 +1,18 @@
+--- ./code/ui/ui_players.c.orig	Wed May 31 18:55:11 2006
++++ ./code/ui/ui_players.c	Wed May 31 19:10:27 2006
+@@ -90,13 +90,13 @@
+ 
+ 	if ( weaponNum == WP_MACHINEGUN || weaponNum == WP_GAUNTLET || weaponNum == WP_BFG ) {
+ 		strcpy( path, item->world_model[0] );
+-		COM_StripExtension( path, path );
++		COM_StripExtension( path, path, sizeof(path) );
+ 		strcat( path, "_barrel.md3" );
+ 		pi->barrelModel = trap_R_RegisterModel( path );
+ 	}
+ 
+ 	strcpy( path, item->world_model[0] );
+-	COM_StripExtension( path, path );
++	COM_StripExtension( path, path, sizeof(path) );
+ 	strcat( path, "_flash.md3" );
+ 	pi->flashModel = trap_R_RegisterModel( path );
+ 
Index: files/patch-code-unix-Makefile
===================================================================
RCS file: /home/pcvs/ports/games/quake3/files/patch-code-unix-Makefile,v
retrieving revision 1.4
diff -u -r1.4 patch-code-unix-Makefile
--- files/patch-code-unix-Makefile	25 May 2006 21:42:29 -0000	1.4
+++ files/patch-code-unix-Makefile	1 Jun 2006 02:49:04 -0000
@@ -1,5 +1,5 @@
---- code/unix/Makefile.orig	Thu May 25 16:59:37 2006
-+++ code/unix/Makefile	Thu May 25 17:04:46 2006
+--- ./code/unix/Makefile.orig	Wed May 31 18:55:11 2006
++++ ./code/unix/Makefile	Wed May 31 18:55:13 2006
 @@ -19,6 +19,7 @@
  
  PLATFORM=$(shell uname|tr A-Z a-z)
@@ -67,8 +67,14 @@
    GLLDFLAGS=-L/usr/X11R6/lib -lX11 -lXext -lXxf86dga -lXxf86vm
  
    ifeq ($(ARCH),axp)
-@@ -199,31 +200,27 @@
+@@ -197,33 +198,35 @@
  
+ ifeq ($(PLATFORM),freebsd)
+ 
++ifeq ($(ARCH),powerpc)
++ARCH=ppc
++endif
++
  GLIBC= #libc is irrelevant
  
 -ifneq (,$(findstring alpha,$(shell uname -m)))
@@ -108,7 +114,9 @@
 -CC=$(shell if [ -f $(NEWPGCC) ]; then echo $(NEWPGCC); else echo pgcc; fi )
 -RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O6 -mcpu=pentiumpro -march=pentium -fomit-frame-pointer -pipe -ffast-math -malign-loops=2 -malign-jumps=2 -malign-functions=2 -fno-strict-aliasing - fstrength-reduce
 +ifneq ($(ARCH),i386)
++  ifneq ($(ARCH),ppc)
 +DLL_ONLY=true
++  endif
 +endif
 +
 +ifeq ($(DLL_ONLY),true)
@@ -116,7 +124,7 @@
  endif
  
  LIBEXT=a
-@@ -235,25 +232,37 @@
+@@ -235,25 +238,37 @@
  ARFLAGS=ar rv
  RANLIB=ranlib
  
@@ -169,7 +177,7 @@
  endif
  
  else # ifeq freebsd
-@@ -283,7 +292,7 @@
+@@ -283,7 +298,7 @@
  ARFLAGS=ar rv
  RANLIB=ranlib
  
@@ -178,7 +186,7 @@
  GLLDFLAGS=-L/usr/X11/lib -lGL -lX11 -lXext -lm
  
  TARGETS=$(B)/sgiquake3 \
-@@ -310,9 +319,9 @@
+@@ -310,9 +325,9 @@
  RANLIB=ranlib
  
  ifeq ($(PLATFORM),freebsd)
@@ -190,7 +198,7 @@
  endif # ifeq freebsd
  
  TARGETS=\
-@@ -348,7 +357,7 @@
+@@ -348,7 +363,7 @@
  	$(MAKE)  targets B=$(BR) CFLAGS="$(RELEASE_CFLAGS)"
  
  #Build both debug and release builds
@@ -199,7 +207,7 @@
  
  targets:makedirs $(TARGETS)
  
-@@ -516,20 +525,6 @@
+@@ -516,20 +531,6 @@
  	$(B)/client/unix_net.o \
  	$(B)/client/unix_shared.o \
  	\
@@ -220,7 +228,7 @@
  #	$(B)/client/q_parse.o \
  #	$(B)/client/math_quaternion.o \
  #	$(B)/client/util_str.o \
-@@ -541,7 +536,9 @@
+@@ -541,7 +542,9 @@
  #	$(B)/client/q_shared.o \
  
      ifeq ($(ARCH),i386)
@@ -231,12 +239,15 @@
      endif
  
      ifeq ($(ARCH),ppc)
-@@ -559,10 +556,24 @@
+@@ -559,10 +562,24 @@
  		$(B)/client/linux_qgl.o \
  		$(B)/client/linux_glimp.o \
  		$(B)/client/linux_snd.o \
 +		$(B)/client/linux_signals.o \
-+		$(B)/client/snd_mixa.o \
+ 		$(B)/client/snd_mixa.o \
+-		$(B)/client/matha.o   \
+-		$(B)/client/ftol.o \
+-		$(B)/client/snapvector.o
 +		$(B)/client/matha.o
 +
 +	Q3POBJ_SMP=\
@@ -245,10 +256,7 @@
 +		$(B)/client/linux_glimp_smp.o \
 +		$(B)/client/linux_snd.o \
 +		$(B)/client/linux_signals.o \
- 		$(B)/client/snd_mixa.o \
--		$(B)/client/matha.o   \
--		$(B)/client/ftol.o \
--		$(B)/client/snapvector.o
++		$(B)/client/snd_mixa.o \
 +		$(B)/client/matha.o
 +
 +    ifeq ($(ARCH),i386)
@@ -259,7 +267,7 @@
  else
  ifeq ($(PLATFORM),irix)
  	Q3POBJ=\
-@@ -578,7 +589,6 @@
+@@ -578,7 +595,6 @@
  		$(B)/client/linux_common.o \
  		$(B)/client/linux_qgl.o \
  		$(B)/client/linux_glimp.o \
@@ -267,7 +275,7 @@
  		$(B)/client/linux_snd.o \
  		$(B)/client/snd_mixa.o \
  		$(B)/client/matha.o \
-@@ -587,7 +597,6 @@
+@@ -587,7 +603,6 @@
  		$(B)/client/linux_common.o \
  		$(B)/client/linux_qgl.o \
  		$(B)/client/linux_glimp_smp.o \
@@ -275,7 +283,7 @@
  		$(B)/client/linux_snd.o \
  		$(B)/client/snd_mixa.o \
  		$(B)/client/matha.o
-@@ -602,12 +611,12 @@
+@@ -602,12 +617,12 @@
  endif #FreeBSD
  endif #IRIX
  
@@ -290,7 +298,7 @@
  	$(CC)  -o $@ $(Q3OBJ) $(Q3POBJ_SMP) $(GLLDFLAGS) \
  		$(THREAD_LDFLAGS) $(LDFLAGS) 
  
-@@ -754,10 +763,10 @@
+@@ -754,10 +769,10 @@
  $(B)/client/linux_common.o : $(UDIR)/linux_common.c; $(DO_CC)
  $(B)/client/linux_glimp.o : $(UDIR)/linux_glimp.c; $(DO_CC)  $(GL_CFLAGS) 
  $(B)/client/linux_glimp_smp.o : $(UDIR)/linux_glimp.c; $(DO_SMP_CC)  $(GL_CFLAGS) 
@@ -302,7 +310,7 @@
  $(B)/client/snd_mixa.o : $(UDIR)/snd_mixa.s; $(DO_AS) 
  $(B)/client/matha.o : $(UDIR)/matha.s; $(DO_AS) 
  
-@@ -912,13 +921,17 @@
+@@ -912,13 +927,17 @@
  	$(B)/ded/unix_main.o \
  	$(B)/ded/unix_net.o \
  	$(B)/ded/unix_shared.o \
@@ -321,7 +329,7 @@
  endif
  
  ifeq ($(ARCH),ppc)
-@@ -927,7 +940,7 @@
+@@ -927,7 +946,7 @@
    endif
  endif
  
@@ -330,7 +338,7 @@
  	$(CC)  -o $@ $(Q3DOBJ) $(LDFLAGS)
  
  $(B)/ded/sv_bot.o : $(SDIR)/sv_bot.c; $(DO_DED_CC) 
-@@ -988,6 +1001,7 @@
+@@ -988,6 +1007,7 @@
  $(B)/ded/unix_main.o : $(UDIR)/unix_main.c; $(DO_DED_CC) 
  $(B)/ded/unix_net.o : $(UDIR)/unix_net.c; $(DO_DED_CC) 
  $(B)/ded/unix_shared.o : $(UDIR)/unix_shared.c; $(DO_DED_CC) 
@@ -338,7 +346,7 @@
  $(B)/ded/null_client.o : $(NDIR)/null_client.c; $(DO_DED_CC) 
  $(B)/ded/null_input.o : $(NDIR)/null_input.c; $(DO_DED_CC) 
  $(B)/ded/null_snddma.o : $(NDIR)/null_snddma.c; $(DO_DED_CC) 
-@@ -1068,7 +1082,7 @@
+@@ -1068,7 +1088,7 @@
  	$(B)/baseq3/cgame/q_math.o \
  	$(B)/baseq3/cgame/q_shared.o
  
@@ -347,7 +355,7 @@
  	$(CC)  $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ)
  
  $(B)/baseq3/cgame/bg_misc.o : $(GDIR)/bg_misc.c; $(DO_SHLIB_CC)         
-@@ -1128,7 +1142,7 @@
+@@ -1128,7 +1148,7 @@
  	$(B)/missionpack/cgame/q_shared.o \
  	$(B)/missionpack/cgame/ui_shared.o
  
@@ -356,7 +364,7 @@
  	$(CC) $(SHLIBLDFLAGS) -o $@ $(MPCGOBJ)
  
  $(B)/missionpack/cgame/bg_misc.o : $(GDIR)/bg_misc.c; $(DO_SHLIB_CC)     -DMISSIONPACK 
-@@ -1200,7 +1214,7 @@
+@@ -1200,7 +1220,7 @@
  	$(B)/baseq3/game/q_math.o \
  	$(B)/baseq3/game/q_shared.o
  
@@ -365,7 +373,7 @@
  	$(CC)  $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ)
  
  $(B)/baseq3/game/ai_chat.o : $(GDIR)/ai_chat.c; $(DO_SHLIB_CC)     
-@@ -1278,7 +1292,7 @@
+@@ -1278,7 +1298,7 @@
  	$(B)/missionpack/game/q_math.o \
  	$(B)/missionpack/game/q_shared.o
  
@@ -374,7 +382,7 @@
  	$(CC) $(SHLIBLDFLAGS) -o $@ $(MPGOBJ)
  
  $(B)/missionpack/game/ai_chat.o : $(GDIR)/ai_chat.c; $(DO_SHLIB_CC)    -DMISSIONPACK 
-@@ -1367,7 +1381,7 @@
+@@ -1367,7 +1387,7 @@
          $(B)/baseq3/ui/q_math.o \
          $(B)/baseq3/ui/q_shared.o
  
@@ -383,7 +391,7 @@
  	$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ)
  
  $(B)/baseq3/ui/bg_misc.o : $(GDIR)/bg_misc.c; $(DO_SHLIB_CC) 
-@@ -1410,7 +1424,7 @@
+@@ -1410,7 +1430,7 @@
  $(B)/baseq3/ui/ui_startserver.o : $(Q3UIDIR)/ui_startserver.c; $(DO_SHLIB_CC) 
  $(B)/baseq3/ui/ui_team.o : $(Q3UIDIR)/ui_team.c; $(DO_SHLIB_CC) 
  $(B)/baseq3/ui/ui_teamorders.o : $(Q3UIDIR)/ui_teamorders.c; $(DO_SHLIB_CC) 
@@ -392,7 +400,7 @@
  $(B)/baseq3/ui/ui_video.o : $(Q3UIDIR)/ui_video.c; $(DO_SHLIB_CC) 
  
  # bk001205 - these wre the only SHLIB compiles in 1.17
-@@ -1450,7 +1464,7 @@
+@@ -1450,7 +1470,7 @@
  #	$(B)/missionpack/ui/q_math.o \
  #	$(B)/missionpack/ui/q_shared.o
  
@@ -401,7 +409,7 @@
  	$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(MPUIOBJ)
  
  $(B)/missionpack/ui/ui_atoms.o : $(UIDIR)/ui_atoms.c; $(DO_SHLIB_CC)  -DMISSIONPACK  
-@@ -1613,23 +1627,8 @@
+@@ -1613,23 +1633,8 @@
  	$(B)/q3static/unix_net.o \
  	$(B)/q3static/unix_shared.o \
  	\
@@ -425,7 +433,7 @@
  	$(B)/q3static/linux_snd.o \
  	$(B)/q3static/snd_mixa.o \
  	$(B)/q3static/matha.o
-@@ -1779,7 +1778,6 @@
+@@ -1779,7 +1784,6 @@
  $(B)/q3static/unix_net.o : $(UDIR)/unix_net.c; $(DO_CC) -DQ3_STATIC 
  $(B)/q3static/unix_shared.o : $(UDIR)/unix_shared.c; $(DO_CC) -DQ3_STATIC 
  $(B)/q3static/linux_glimp.o : $(UDIR)/linux_glimp.c; $(DO_CC) -DQ3_STATIC 
@@ -433,7 +441,7 @@
  $(B)/q3static/linux_qgl.o : $(UDIR)/linux_qgl.c; $(DO_CC) -DQ3_STATIC 
  $(B)/q3static/linux_input.o : $(UDIR)/linux_input.c; $(DO_CC) -DQ3_STATIC 
  $(B)/q3static/linux_snd.o : $(UDIR)/linux_snd.c; $(DO_CC) -DQ3_STATIC 
-@@ -2020,7 +2018,7 @@
+@@ -2020,7 +2024,7 @@
  
  
  
@@ -442,7 +450,7 @@
  	$(CC) $(CFLAGS) -o $@ $(Q3SOBJ)  $(GLLDFLAGS) $(LDFLAGS) 
  
  
-@@ -2059,9 +2057,9 @@
+@@ -2059,9 +2063,9 @@
  
  copyfiles:
  	-mkdirhier $(COPYDIR)
Index: files/patch-code-unix-linux_common.c
===================================================================
RCS file: files/patch-code-unix-linux_common.c
diff -N files/patch-code-unix-linux_common.c
--- files/patch-code-unix-linux_common.c	17 Nov 2005 10:35:03 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,18 +0,0 @@
-diff -ruN ./code/unix/linux_common.c ../quake3-1.32b-BUILT/./code/unix/linux_common.c
---- ./code/unix/linux_common.c	Tue Aug 16 02:10:07 2005
-+++ ../quake3-1.32b-BUILT/./code/unix/linux_common.c	Tue Aug 23 13:38:35 2005
-@@ -33,6 +33,7 @@
- #include <unistd.h>   // AH - for size_t
- #include <string.h>
- 
-+
- // bk001207 - we need something under Linux, too. Mac?
- #if 1 // defined(C_ONLY) // bk010102 - dedicated?
- void Com_Memcpy (void* dest, const void* src, const size_t count) {
-@@ -340,5 +341,6 @@
- 		break;
- 	}
- }
-+
- 
- #endif
Index: files/patch-code-unix-linux_glimp.c
===================================================================
RCS file: files/patch-code-unix-linux_glimp.c
diff -N files/patch-code-unix-linux_glimp.c
--- files/patch-code-unix-linux_glimp.c	17 Nov 2005 10:35:03 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,11 +0,0 @@
-diff -ruN ./code/unix/linux_glimp.c ../quake3-1.32b-BUILT/./code/unix/linux_glimp.c
---- ./code/unix/linux_glimp.c	Tue Aug 16 02:10:07 2005
-+++ ../quake3-1.32b-BUILT/./code/unix/linux_glimp.c	Mon Aug 22 22:11:16 2005
-@@ -1774,7 +1774,5 @@
- // bk010216 - added stubs for non-Linux UNIXes here
- // FIXME - use NO_JOYSTICK or something else generic
- 
--#if defined( __FreeBSD__ ) // rb010123
- void IN_StartupJoystick( void ) {}
- void IN_JoyMove( void ) {}
--#endif
Index: files/patch-code-unix-unix_main.c
===================================================================
RCS file: /home/pcvs/ports/games/quake3/files/patch-code-unix-unix_main.c,v
retrieving revision 1.1
diff -u -r1.1 patch-code-unix-unix_main.c
--- files/patch-code-unix-unix_main.c	25 May 2006 21:42:29 -0000	1.1
+++ files/patch-code-unix-unix_main.c	1 Jun 2006 02:49:04 -0000
@@ -1,5 +1,5 @@
---- code/unix/unix_main.c.orig	Thu May 25 16:59:37 2006
-+++ code/unix/unix_main.c	Thu May 25 17:00:58 2006
+--- ./code/unix/unix_main.c.orig	Wed May 31 18:55:12 2006
++++ ./code/unix/unix_main.c	Wed May 31 18:55:13 2006
 @@ -707,12 +707,12 @@
  {
    void *libHandle;
Index: files/patch-code-unix-unix_shared.c
===================================================================
RCS file: /home/pcvs/ports/games/quake3/files/patch-code-unix-unix_shared.c,v
retrieving revision 1.3
diff -u -r1.3 patch-code-unix-unix_shared.c
--- files/patch-code-unix-unix_shared.c	25 May 2006 21:42:29 -0000	1.3
+++ files/patch-code-unix-unix_shared.c	1 Jun 2006 02:49:04 -0000
@@ -1,5 +1,5 @@
---- code/unix/unix_shared.c.orig	Thu May 25 14:38:44 2006
-+++ code/unix/unix_shared.c	Thu May 25 14:41:26 2006
+--- ./code/unix/unix_shared.c.orig	Wed May 31 18:55:12 2006
++++ ./code/unix/unix_shared.c	Wed May 31 18:55:13 2006
 @@ -38,7 +38,7 @@
  static char cdPath[MAX_OSPATH];
  
--- quake3.diff ends here ---



>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1149181898.11880>