Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37816566
en ru br
Репозитории ALT
S:1.2.0-alt4
5.1: 1.1.0-alt4
4.1: 1.1.0-alt3.M41.1
4.0: 1.1.0-alt3.M40.1
www.altlinux.org/Changes

Группа :: Игры/Аркады
Пакет: tremulous

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: tremulous-1.2.0-dll-overwrite.patch
Скачать


diff --git a/src/qcommon/files.c b/src/qcommon/files.c
index 656b8fb..afeeb9b 100644
--- a/src/qcommon/files.c
+++ b/src/qcommon/files.c
@@ -531,7 +531,7 @@ static void FS_CheckFilenameIsNotExecutable( const char *filename,
 		const char *function )
 {
 	// Check if the filename ends with the library extension
-	if( !Q_stricmp( COM_GetExtension( filename ), DLL_EXT ) )
+	if(COM_CompareExtension(filename, DLL_EXT))
 	{
 		Com_Error( ERR_FATAL, "%s: Not allowed to manipulate '%s' due "
 			"to %s extension\n", function, filename, DLL_EXT );
diff --git a/src/qcommon/q_shared.c b/src/qcommon/q_shared.c
index 59ddf2e..c6ab101 100644
--- a/src/qcommon/q_shared.c
+++ b/src/qcommon/q_shared.c
@@ -97,6 +97,30 @@ void COM_StripExtension( const char *in, char *out, int destsize ) {
 		out[length] = 0;
 }
 
+/*
+============
+COM_CompareExtension
+
+string compare the end of the strings and return qtrue if strings match
+============
+*/
+qboolean COM_CompareExtension(const char *in, const char *ext)
+{
+	int inlen, extlen;
+	
+	inlen = strlen(in);
+	extlen = strlen(ext);
+	
+	if(extlen <= inlen)
+	{
+		in += inlen - extlen;
+		
+		if(!Q_stricmp(in, ext))
+			return qtrue;
+	}
+	
+	return qfalse;
+}
 
 /*
 ==================
diff --git a/src/qcommon/q_shared.h b/src/qcommon/q_shared.h
index e1b166a..2456b81 100644
--- a/src/qcommon/q_shared.h
+++ b/src/qcommon/q_shared.h
@@ -693,6 +693,7 @@ float Com_Clamp( float min, float max, float value );
 char	*COM_SkipPath( char *pathname );
 const char	*COM_GetExtension( const char *name );
 void	COM_StripExtension(const char *in, char *out, int destsize);
+qboolean COM_CompareExtension(const char *in, const char *ext);
 void	COM_DefaultExtension( char *path, int maxSize, const char *extension );
 
 void	COM_BeginParseSession( const char *name );
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin