swt2c / rpms / scorched3d

Forked from rpms/scorched3d 5 years ago
Clone
Blob Blame History Raw
diff -ur scorched.orig/src/3dsparse/MSModelFactory.cpp scorched/src/3dsparse/MSModelFactory.cpp
--- scorched.orig/src/3dsparse/MSModelFactory.cpp	2006-02-11 15:02:47.000000000 +0100
+++ scorched/src/3dsparse/MSModelFactory.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -278,7 +278,8 @@
 		if (sscanf(buffer, "%s", textureName) != 1)
 			returnError(fileName, "No material texture format");
 		textureName[strlen(textureName)-1] = '\0';
-		sprintf(fullTextureName, "%s/%s", filePath, &textureName[1]);
+		snprintf(fullTextureName, sizeof(fullTextureName), "%s/%s",
+			filePath, &textureName[1]);
 		while (sep=strchr(fullTextureName, '\\')) *sep = '/';
 
 		// alphamap
@@ -289,7 +290,8 @@
 		if (sscanf(buffer, "%s", textureNameAlpha) != 1)
 			returnError(fileName, "No material alpha texture format");
 		textureNameAlpha[strlen(textureNameAlpha)-1] = '\0';
-		sprintf(fullTextureAlphaName, "%s/%s", filePath, &textureNameAlpha[1]);
+		snprintf(fullTextureAlphaName, sizeof(fullTextureAlphaName),
+			"%s/%s", filePath, &textureNameAlpha[1]);
 		while (sep=strchr(fullTextureAlphaName, '\\')) *sep = '/';
 
 		int modelIndex = 0;
diff -ur scorched.orig/src/3dsparse/ModelID.cpp scorched/src/3dsparse/ModelID.cpp
--- scorched.orig/src/3dsparse/ModelID.cpp	2006-02-11 15:02:47.000000000 +0100
+++ scorched/src/3dsparse/ModelID.cpp	2006-02-11 15:10:00.000000000 +0100
@@ -75,7 +75,8 @@
 		if (!modelNode->getNamedChild("mesh", meshNode)) return false;
 		const char *meshNameContent = meshNode->getContent();
 		static char meshName[1024];
-		sprintf(meshName, "%s/%s", directory, meshNameContent);
+		snprintf(meshName, sizeof(meshName), "%s/%s", directory,
+			meshNameContent);
 		if (!DefinesUtil::fileExists(getDataFile(meshName)))
 		{
 			dialogMessage("Scorched Models",
@@ -89,7 +90,8 @@
 		static char skinName[1024];
 		if (strcmp(skinNameContent, "none") != 0)
 		{
-			sprintf(skinName, "%s/%s", directory, skinNameContent);
+			snprintf(skinName, sizeof(skinName), "%s/%s",
+				directory, skinNameContent);
 			if (!DefinesUtil::fileExists(getDataFile(skinName)))
 			{
 				dialogMessage("Scorched Models",
@@ -100,7 +102,8 @@
 		}
 		else
 		{
-			sprintf(skinName, "%s", skinNameContent);
+			snprintf(skinName, sizeof(skinName), "%s",
+				skinNameContent);
 		}
 
 		meshName_ = meshName;
@@ -110,7 +113,8 @@
 	{
 		const char *meshNameContent = modelNode->getContent();
 		static char meshName[1024];
-		sprintf(meshName, "%s/%s", directory, meshNameContent);
+		snprintf(meshName, sizeof(meshName), "%s/%s", directory,
+			meshNameContent);
 
 		if (!DefinesUtil::fileExists(getDataFile(meshName)))
 		{
Only in scorched/src/3dsparse: ModelID.cpp~
diff -ur scorched.orig/src/3dsparse/aseFile.tab.cpp scorched/src/3dsparse/aseFile.tab.cpp
--- scorched.orig/src/3dsparse/aseFile.tab.cpp	2005-04-12 00:19:08.000000000 +0200
+++ scorched/src/3dsparse/aseFile.tab.cpp	2006-02-11 15:10:46.000000000 +0100
@@ -1056,7 +1056,7 @@
 int aseerror(const char *errmsg)
 {
 	char buffer[1024];
-	sprintf(buffer, "%i:%s\n", aselineno, errmsg);
+	snprintf(buffer, sizeof(buffer), "%i:%s\n", aselineno, errmsg);
 	dialogMessage("Lexer", buffer);
     return 0;
 }
@@ -1064,7 +1064,7 @@
 int asewarning(const char *warningmsg)
 {
 	char buffer[1024];
-	sprintf(buffer, "%i:%s\n", aselineno, warningmsg);
+	snprintf(buffer, sizeof(buffer), "%i:%s\n", aselineno, warningmsg);
 	dialogMessage("Lexer", buffer);
     return 0;
 }
@@ -1072,7 +1072,7 @@
 int asedebug(const char *debugmsg)
 {
 	char buffer[1024];
-	sprintf(buffer, "%i:%s\n", aselineno, debugmsg);
+	snprintf(buffer, sizeof(buffer), "%i:%s\n", aselineno, debugmsg);
 	dialogMessage("Lexer", buffer);
     return 0;
 }
Only in scorched/src/3dsparse: aseFile.tab.cpp~
diff -ur scorched.orig/src/GLEXT/GLConsole.cpp scorched/src/GLEXT/GLConsole.cpp
--- scorched.orig/src/GLEXT/GLConsole.cpp	2005-04-05 00:35:23.000000000 +0200
+++ scorched/src/GLEXT/GLConsole.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -265,7 +265,7 @@
 	va_list ap;
 
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, TEXT_SIZE, fmt, ap);
 	va_end(ap);
 
 	DIALOG_ASSERT(strlen(text)<TEXT_SIZE);
diff -ur scorched.orig/src/GLEXT/GLConsoleRuleFn.cpp scorched/src/GLEXT/GLConsoleRuleFn.cpp
--- scorched.orig/src/GLEXT/GLConsoleRuleFn.cpp	2003-07-10 18:29:16.000000000 +0200
+++ scorched/src/GLEXT/GLConsoleRuleFn.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -136,7 +136,7 @@
 		break;
 	case GLConsoleRuleTypeNumber:
 		static char buffer[10];
-		sprintf(buffer,"%.2f", user_->getNumberParam(name_.c_str()));
+		snprintf(buffer, sizeof(buffer), "%.2f", user_->getNumberParam(name_.c_str()));
 		value = buffer;
 		break;
 	case GLConsoleRuleTypeString:
diff -ur scorched.orig/src/GLEXT/GLFont2d.cpp scorched/src/GLEXT/GLFont2d.cpp
--- scorched.orig/src/GLEXT/GLFont2d.cpp	2005-07-11 22:40:36.000000000 +0200
+++ scorched/src/GLEXT/GLFont2d.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -56,7 +56,7 @@
 	va_list ap;
 
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, sizeof(text), fmt, ap);
 	va_end(ap);	
 
 	float width = 0.0f;
@@ -75,7 +75,7 @@
 	va_list ap;
 
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, sizeof(text), fmt, ap);
 	va_end(ap);	
 
 	drawString((GLsizei) strlen(text), color, 1.0f, size, x, y, z, text, false);
@@ -89,7 +89,7 @@
 	va_list ap;
 
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, sizeof(text), fmt, ap);
 	va_end(ap);	
 
 	drawString((GLsizei) strlen(text), color, alpha, size, x, y, z, text, false);
@@ -103,7 +103,7 @@
 	va_list ap;
 
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, sizeof(text), fmt, ap);
 	va_end(ap);	
 
 	drawString((GLsizei) strlen(text), color, 1.0f, size, x, y, z, text, false, size2);
@@ -118,7 +118,7 @@
 	va_list ap;
 
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, sizeof(text), fmt, ap);
 	va_end(ap);	
 
 	int s = start;
@@ -143,7 +143,7 @@
 	va_list ap;
 
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, sizeof(text), fmt, ap);
 	va_end(ap);	
 
 	int l = 0;
@@ -165,7 +165,7 @@
 	va_list ap;
 
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, sizeof(text), fmt, ap);
 	va_end(ap);	
 
 	drawString((GLsizei) strlen(text), color, 1.0f, size, x, y, z, text, true);
diff -ur scorched.orig/src/GLW/GLWListView.cpp scorched/src/GLW/GLWListView.cpp
--- scorched.orig/src/GLW/GLWListView.cpp	2005-06-20 02:35:07.000000000 +0200
+++ scorched/src/GLW/GLWListView.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -107,7 +107,7 @@
 	va_list ap;
 
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, sizeof(text), fmt, ap);
 	va_end(ap);	
 
 	lines_.push_back(text);
diff -ur scorched.orig/src/GLW/GLWScorchedInfo.cpp scorched/src/GLW/GLWScorchedInfo.cpp
--- scorched.orig/src/GLW/GLWScorchedInfo.cpp	2005-02-13 01:05:13.000000000 +0100
+++ scorched/src/GLW/GLWScorchedInfo.cpp	2006-02-11 15:11:46.000000000 +0100
@@ -86,7 +86,7 @@
 			}
 			else
 			{
-				sprintf(buffer, "Force %.0f", 
+				snprintf(buffer, sizeof(buffer), "Force %.0f", 
 					ScorchedClient::instance()->
 					getOptionsTransient().getWindSpeed());
 			}
@@ -237,7 +237,7 @@
 			setToolTip(&model->getTips()->weaponTip);
 
 			static char buffer[256];
-			sprintf(buffer, "%s", 
+			snprintf(buffer, sizeof(buffer), "%s",
 				current->getAccessories().getWeapons().getCurrent()->getName());
 			float weaponWidth = (float) GLWFont::instance()->getSmallPtFont()->
 				getWidth(fontSize_, buffer);
Only in scorched/src/GLW: GLWScorchedInfo.cpp~
Only in scorched/src/GLW: GLWSelectorPart.cpp.orig
diff -ur scorched.orig/src/GLW/GLWToolTip.cpp scorched/src/GLW/GLWToolTip.cpp
--- scorched.orig/src/GLW/GLWToolTip.cpp	2005-08-12 16:20:11.000000000 +0200
+++ scorched/src/GLW/GLWToolTip.cpp	2006-02-11 15:07:49.000000000 +0100
@@ -58,7 +58,7 @@
 	va_list ap;
 
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, TEXT_SIZE, fmt, ap);
 	va_end(ap);
 
 	texts_.clear();
Only in scorched/src/GLW: GLWToolTip.cpp~
diff -ur scorched.orig/src/XML/XMLParser.cpp scorched/src/XML/XMLParser.cpp
--- scorched.orig/src/XML/XMLParser.cpp	2005-07-03 01:50:03.000000000 +0200
+++ scorched/src/XML/XMLParser.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -91,7 +91,7 @@
 	name_(name), parent_(0), type_(type)
 {
 	char buffer[20];
-	sprintf(buffer, "%.2f", content);
+	snprintf(buffer, sizeof(buffer), "%.2f", content);
 	content_ = buffer;
 }
 
@@ -460,7 +460,8 @@
 	XML_Error errorCode = XML_GetErrorCode(p_);
 
 	static char message[1024];
-	sprintf(message, "Parse Error, File %s: Line:%i Col:%i Error:%s",
+	snprintf(message, sizeof(message),
+		"Parse Error, File %s: Line:%i Col:%i Error:%s",
 		source_.c_str(),
 		XML_GetCurrentLineNumber(p_),
 		XML_GetCurrentColumnNumber(p_),
diff -ur scorched.orig/src/client/ServerBrowserServerList.cpp scorched/src/client/ServerBrowserServerList.cpp
--- scorched.orig/src/client/ServerBrowserServerList.cpp	2005-06-08 19:29:38.000000000 +0200
+++ scorched/src/client/ServerBrowserServerList.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -54,7 +54,7 @@
 {
 	// Create the message that will be sent to the master server
 	static char buffer[1024];
-	sprintf(buffer, 
+	snprintf(buffer, sizeof(buffer),
 		"GET %s/servers.php HTTP/1.0\r\n"
 		"User-Agent: Scorched3D\r\n"
 		"Host: %s\r\n"
diff -ur scorched.orig/src/client/SpeedChange.cpp scorched/src/client/SpeedChange.cpp
--- scorched.orig/src/client/SpeedChange.cpp	2004-11-22 00:19:51.000000000 +0100
+++ scorched/src/client/SpeedChange.cpp	2006-02-11 15:12:44.000000000 +0100
@@ -58,7 +58,7 @@
 	{
 		GLState state(GLState::BLEND_ON | GLState::TEXTURE_OFF); 
 		static char buffer[10];
-		sprintf(buffer, "%.1fX", speed);
+		snprintf(buffer, sizeof(buffer), "%.1fX", speed);
 
 		static Vector fontColor(0.7f, 0.7f, 0.2f);
 		GLWFont::instance()->getLargePtFont()->draw(fontColor, 20, 10.0f, 10.0f, 0.0f, buffer);
Only in scorched/src/client: SpeedChange.cpp~
diff -ur scorched.orig/src/common/ARGParser.cpp scorched/src/common/ARGParser.cpp
--- scorched.orig/src/common/ARGParser.cpp	2005-07-24 21:34:00.000000000 +0200
+++ scorched/src/common/ARGParser.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -102,7 +102,7 @@
 		else
 		{
 			char buffer[255];
-			sprintf(buffer, "ERROR: Unknown parameter : \"%s\"\n\n", firstCommand.c_str());
+			snprintf(buffer, sizeof(buffer), "ERROR: Unknown parameter : \"%s\"\n\n", firstCommand.c_str());
 			showArgs(buffer);
 			return false;
 		}
@@ -249,7 +249,7 @@
 		else if (itor->second.destI || itor->second.destInt) type = "<int>";
 
 		char buffer2[255];
-		sprintf(buffer2, "\t%s %s", itor->first.c_str(), type);
+		snprintf(buffer2, sizeof(buffer2), "\t%s %s", itor->first.c_str(), type);
 		if (itor->second.help.size())
 		{
 			strcat(buffer2, std::string(abs(30 - int(strlen(buffer2))), ' ').c_str());
diff -ur scorched.orig/src/common/Defines.cpp scorched/src/common/Defines.cpp
--- scorched.orig/src/common/Defines.cpp	2006-02-11 15:02:47.000000000 +0100
+++ scorched/src/common/Defines.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -72,7 +72,7 @@
 	va_list ap;
 
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, sizeof(text), fmt, ap);
 	va_end(ap);
 
 #ifdef _WIN32
@@ -93,21 +93,14 @@
 
 void dialogAssert(const char *lineText, const int line, const char *file)
 {
-	// Dont use formatString here as this method is called by formatString.
-	char buffer[20048];
-	sprintf(buffer, "%s\n%i:%s", lineText, line, file);
-	dialogMessage("Program Assert", buffer);
+	dialogMessage("Program Assert", "%s\n%i:%s", lineText, line, file);
 	exit(64);
 }
 
 const char *formatStringList(const char *format, va_list ap)
 {
 	static char buffer[20048];
-	buffer[sizeof(buffer) - 1] = '\0';
-	vsprintf(buffer, format, ap);
-	if (buffer[sizeof(buffer) - 1] != 0) 
-		dialogAssert("buffer[sizeof(buffer) - 1] == 0", __LINE__, __FILE__);
-
+	vsnprintf(buffer, sizeof(buffer), format, ap);
 	return buffer;
 }
 
@@ -160,18 +153,20 @@
 	static char buffer[1024];
 	va_list ap;
 	va_start(ap, file);
-	vsprintf(filename, file, ap);
+	vsnprintf(filename, sizeof(filename), file, ap);
 	va_end(ap);
 
-	sprintf(buffer, getModFile("%s/%s", DefinesUtil::getDataFileMod(), filename));
+	snprintf(buffer, sizeof(buffer), "%s",
+		getModFile("%s/%s", DefinesUtil::getDataFileMod(), filename));
 	DefinesUtil::fileDos2Unix(buffer);
 	if (DefinesUtil::fileExists(buffer)) return buffer;
 
-	sprintf(buffer, getGlobalModFile("%s/%s", DefinesUtil::getDataFileMod(), filename));
+	snprintf(buffer, sizeof(buffer), "%s",
+		 getGlobalModFile("%s/%s", DefinesUtil::getDataFileMod(), filename));
 	DefinesUtil::fileDos2Unix(buffer);
 	if (DefinesUtil::fileExists(buffer)) return buffer;
 
-	sprintf(buffer, S3D_DATADIR "/%s", filename);
+	snprintf(buffer, sizeof(buffer), S3D_DATADIR "/%s", filename);
 	DefinesUtil::fileDos2Unix(buffer);
 
 	return buffer;
@@ -182,7 +177,7 @@
 	static char filename[1024];
 	va_list ap;
 	va_start(ap, file);
-	vsprintf(filename, file, ap);
+	vsnprintf(filename, sizeof(filename), file, ap);
 	va_end(ap);
 
 	const char *dataFileName = getDataFile(filename);
@@ -205,9 +200,9 @@
 	static char buffer[1024];
 	va_list ap;
 	va_start(ap, file);
-	vsprintf(filename, file, ap);
+	vsnprintf(filename, sizeof(filename), file, ap);
 	va_end(ap);
-	sprintf(buffer, S3D_DOCDIR "/%s", filename);
+	snprintf(buffer, sizeof(buffer), S3D_DOCDIR "/%s", filename);
 	DefinesUtil::fileDos2Unix(buffer);
 	return buffer;
 }
@@ -217,7 +212,7 @@
 	static char filename[1024];
 	va_list ap;
 	va_start(ap, file);
-	vsprintf(filename, file, ap);
+	vsnprintf(filename, sizeof(filename), file, ap);
 	va_end(ap);
 
 	static std::string homeDir;
@@ -231,7 +226,7 @@
 	}
 
 	static char buffer[1024];
-	sprintf(buffer, "%s/%s", homeDir.c_str(), filename);
+	snprintf(buffer, sizeof(buffer), "%s/%s", homeDir.c_str(), filename);
 	DefinesUtil::fileDos2Unix(buffer);
 	return buffer;
 }
@@ -242,7 +237,7 @@
 	
 	va_list ap;
 	va_start(ap, file);
-	vsprintf(filename, file, ap);
+	vsnprintf(filename, sizeof(filename), file, ap);
 	va_end(ap);
 
 	static std::string homeDir;
@@ -261,7 +256,7 @@
 	}
 
 	static char buffer[1024];
-	sprintf(buffer, "%s/%s", homeDir.c_str(), filename);
+	snprintf(buffer, sizeof(buffer), "%s/%s", homeDir.c_str(), filename);
 	DefinesUtil::fileDos2Unix(buffer);
 	return buffer;
 }
@@ -272,7 +267,7 @@
 	static char buffer[1024];
 	va_list ap;
 	va_start(ap, file);
-	vsprintf(filename, file, ap);
+	vsnprintf(filename, sizeof(filename), file, ap);
 	va_end(ap);
 
 	const char *homeDirStr = getSettingsFile("");
@@ -280,7 +275,7 @@
 	if (DefinesUtil::dirExists(newDir.c_str())) homeDirStr = newDir.c_str();
 	else if (DefinesUtil::dirMake(newDir.c_str())) homeDirStr = newDir.c_str();
 
-	sprintf(buffer, "%s/%s", homeDirStr, filename);
+	snprintf(buffer, sizeof(buffer), "%s/%s", homeDirStr, filename);
 	DefinesUtil::fileDos2Unix(buffer);
 	return buffer;
 }
@@ -290,7 +285,7 @@
 	static char filename[1024];
 	va_list ap;
 	va_start(ap, file);
-	vsprintf(filename, file, ap);
+	vsnprintf(filename, sizeof(filename), file, ap);
 	va_end(ap);
 
 	static char buffer[1024];
@@ -299,7 +294,7 @@
 	if (DefinesUtil::dirExists(newDir.c_str())) homeDirStr = newDir.c_str();
 	else if (DefinesUtil::dirMake(newDir.c_str())) homeDirStr = newDir.c_str();
 
-	sprintf(buffer, "%s/%s", homeDirStr, filename);
+	snprintf(buffer, sizeof(buffer), "%s/%s", homeDirStr, filename);
 	DefinesUtil::fileDos2Unix(buffer);
 	return buffer;
 }
@@ -309,7 +304,7 @@
 	static char filename[1024];
 	va_list ap;
 	va_start(ap, file);
-	vsprintf(filename, file, ap);
+	vsnprintf(filename, sizeof(filename), file, ap);
 	va_end(ap);
 
 	static std::string modDir;
@@ -324,7 +319,7 @@
 	}
 	         
 	static char buffer[1024];
-	sprintf(buffer, "%s/%s", modDir.c_str(), filename);
+	snprintf(buffer, sizeof(buffer), "%s/%s", modDir.c_str(), filename);
 	DefinesUtil::fileDos2Unix(buffer);
 	return buffer;
 }
@@ -334,11 +329,11 @@
 	static char filename[1024];
 	va_list ap;
 	va_start(ap, file);
-	vsprintf(filename, file, ap);
+	vsnprintf(filename, sizeof(filename), file, ap);
 	va_end(ap);
 
 	static char buffer[1024];
-	sprintf(buffer, S3D_DATADIR "/data/globalmods/%s", filename);
+	snprintf(buffer, sizeof(buffer), S3D_DATADIR "/data/globalmods/%s", filename);
 	DefinesUtil::fileDos2Unix(buffer);
 	return buffer;
 }
diff -ur scorched.orig/src/common/FileLines.cpp scorched/src/common/FileLines.cpp
--- scorched.orig/src/common/FileLines.cpp	2004-11-09 00:43:23.000000000 +0100
+++ scorched/src/common/FileLines.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -96,7 +96,7 @@
 	va_list ap;
 
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, sizeof(text), fmt, ap);
 	va_end(ap);
 
 	fileLines_.push_back(text);
diff -ur scorched.orig/src/common/Logger.cpp scorched/src/common/Logger.cpp
--- scorched.orig/src/common/Logger.cpp	2005-06-20 02:35:08.000000000 +0200
+++ scorched/src/common/Logger.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -87,7 +87,7 @@
 	static char text[2048];
 	va_list ap;
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, sizeof(text), fmt, ap);
 	va_end(ap);
 
 	LoggerInfo info;
diff -ur scorched.orig/src/common/StatsLoggerFile.cpp scorched/src/common/StatsLoggerFile.cpp
--- scorched.orig/src/common/StatsLoggerFile.cpp	2006-02-11 15:02:47.000000000 +0100
+++ scorched/src/common/StatsLoggerFile.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -124,7 +124,7 @@
 	if (nl) *nl = '\0';
 
 	char message[1024];
-	sprintf(message, "fired \"%s\" [%s] \"%s\"", 
+	snprintf(message, sizeof(message), "fired \"%s\" [%s] \"%s\"", 
 		firedTank->getName(), firedTank->getUniqueId(),
 		weapon->getParent()->getName());
 
@@ -143,7 +143,7 @@
 	if (nl) *nl = '\0';
 
 	char message[1024];
-	sprintf(message, "resigined \"%s\" [%s]", 
+	snprintf(message, sizeof(message), "resigined \"%s\" [%s]", 
 		resignedTank->getName(), resignedTank->getUniqueId());
 	LoggerInfo info(LoggerInfo::TypeNormal, message, time);
 	statsLogger_->logMessage(info);
@@ -160,7 +160,7 @@
 	if (nl) *nl = '\0';
 
 	char message[1024];
-	sprintf(message, "joined \"%s\" [%s]", 
+	snprintf(message, sizeof(message), "joined \"%s\" [%s]", 
 		tank->getName(), tank->getUniqueId());
 	LoggerInfo info(LoggerInfo::TypeNormal, message, time);
 	statsLogger_->logMessage(info);
@@ -177,7 +177,7 @@
 	if (nl) *nl = '\0';
 
 	char message[1024];
-	sprintf(message, "connected \"%s\" [%s]", 
+	snprintf(message, sizeof(message), "connected \"%s\" [%s]", 
 		tank->getName(), tank->getUniqueId());
 	LoggerInfo info(LoggerInfo::TypeNormal, message, time);
 	statsLogger_->logMessage(info);
@@ -194,7 +194,7 @@
 	if (nl) *nl = '\0';
 
 	char message[1024];
-	sprintf(message, "disconnected \"%s\" [%s]", 
+	snprintf(message, sizeof(message), "disconnected \"%s\" [%s]", 
 		tank->getName(), tank->getUniqueId());
 	LoggerInfo info(LoggerInfo::TypeNormal, message, time);
 	statsLogger_->logMessage(info);
@@ -211,7 +211,7 @@
 	if (nl) *nl = '\0';
 
 	char message[1024];
-	sprintf(message, "killed \"%s\" [%s] \"%s\" [%s] \"%s\"", 
+	snprintf(message, sizeof(message), "killed \"%s\" [%s] \"%s\" [%s] \"%s\"", 
 		firedTank->getName(), firedTank->getUniqueId(),
 		deadTank->getName(), deadTank->getUniqueId(),
 		weapon->getParent()->getName());
@@ -230,7 +230,7 @@
 	if (nl) *nl = '\0';
 
 	char message[1024];
-	sprintf(message, "teamkilled \"%s\" [%s] \"%s\" [%s] \"%s\"", 
+	snprintf(message, sizeof(message), "teamkilled \"%s\" [%s] \"%s\" [%s] \"%s\"", 
 		firedTank->getName(), firedTank->getUniqueId(),
 		deadTank->getName(), deadTank->getUniqueId(),
 		weapon->getParent()->getName());
@@ -249,7 +249,7 @@
 	if (nl) *nl = '\0';
 
 	char message[1024];
-	sprintf(message, "selfkilled \"%s\" [%s] \"%s\"", 
+	snprintf(message, sizeof(message), "selfkilled \"%s\" [%s] \"%s\"", 
 		firedTank->getName(), firedTank->getUniqueId(),
 		weapon->getParent()->getName());
 	LoggerInfo info(LoggerInfo::TypeNormal, message, time);
@@ -267,7 +267,7 @@
 	if (nl) *nl = '\0';
 
 	char message[1024];
-	sprintf(message, "won \"%s\" [%s]", 
+	snprintf(message, sizeof(message), "won \"%s\" [%s]", 
 		tank->getName(), tank->getUniqueId());
 	LoggerInfo info(LoggerInfo::TypeNormal, message, time);
 	statsLogger_->logMessage(info);
@@ -284,7 +284,7 @@
 	if (nl) *nl = '\0';
 
 	char message[1024];
-	sprintf(message, "overallwinner \"%s\" [%s]", 
+	snprintf(message, sizeof(message), "overallwinner \"%s\" [%s]", 
 		tank->getName(), tank->getUniqueId());
 	LoggerInfo info(LoggerInfo::TypeNormal, message, time);
 	statsLogger_->logMessage(info);
@@ -301,7 +301,7 @@
 	if (nl) *nl = '\0';
 
 	char message[1024];
-	sprintf(message, "weaponfired \"%s\"", weapon->getParent()->getName());
+	snprintf(message, sizeof(message), "weaponfired \"%s\"", weapon->getParent()->getName());
 	LoggerInfo info(LoggerInfo::TypeNormal, message, time);
 	statsLogger_->logMessage(info);
 }
@@ -317,7 +317,7 @@
 	if (nl) *nl = '\0';
 
 	char message[1024];
-	sprintf(message, "weaponkilled \"%s\"", weapon->getParent()->getName());
+	snprintf(message, sizeof(message), "weaponkilled \"%s\"", weapon->getParent()->getName());
 	LoggerInfo info(LoggerInfo::TypeNormal, message, time);
 	statsLogger_->logMessage(info);
 }
diff -ur scorched.orig/src/common/StatsLoggerMySQL.cpp scorched/src/common/StatsLoggerMySQL.cpp
--- scorched.orig/src/common/StatsLoggerMySQL.cpp	2005-08-08 11:37:24.000000000 +0200
+++ scorched/src/common/StatsLoggerMySQL.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -63,7 +63,7 @@
 	static char text[50000];
 	va_list ap;
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, sizeof(text), fmt, ap);
 	va_end(ap);
 
 	return (mysql_real_query(mysql_, text, strlen(text)) == 0);
diff -ur scorched.orig/src/coms/ComsConnectMessage.h scorched/src/coms/ComsConnectMessage.h
--- scorched.orig/src/coms/ComsConnectMessage.h	2005-07-21 22:34:24.000000000 +0200
+++ scorched/src/coms/ComsConnectMessage.h	2006-02-11 15:02:03.000000000 +0100
@@ -47,7 +47,7 @@
 	void setUniqueId(const char *uid) { setValue("uid", uid); }
 	void setHostDesc(const char *host) { setValue("host", host); }
 	void setNoPlayers(unsigned int players) { 
-		char buf[10]; sprintf(buf, "%i", players); setValue("numplayers", buf); }
+		char buf[11]; sprintf(buf, "%u", players); setValue("numplayers", buf); }
 
 	const char *getVersion() { return getValue("version"); }
 	const char *getProtocolVersion() { return getValue("pversion"); }
diff -ur scorched.orig/src/coms/ComsMessageHandler.cpp scorched/src/coms/ComsMessageHandler.cpp
--- scorched.orig/src/coms/ComsMessageHandler.cpp	2005-04-05 00:35:25.000000000 +0200
+++ scorched/src/coms/ComsMessageHandler.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -114,7 +114,8 @@
 	if (itor == handlerMap_.end())
 	{
 		char buffer[1024];
-		sprintf(buffer, "Failed to find message type handler \"%s\"",
+		snprintf(buffer, sizeof(buffer),
+			"Failed to find message type handler \"%s\"",
 			messageType.c_str());
 
 		if (connectionHandler_)
@@ -129,7 +130,8 @@
 		messageTypeStr, reader))
 	{
 		char buffer[1024];
-		sprintf(buffer, "Failed to handle message type \"%s\"",
+		snprintf(buffer, sizeof(buffer),
+			"Failed to handle message type \"%s\"",
 			messageType.c_str());
 
 		if (connectionHandler_)
diff -ur scorched.orig/src/dialogs/AutoDefenseDialog.cpp scorched/src/dialogs/AutoDefenseDialog.cpp
--- scorched.orig/src/dialogs/AutoDefenseDialog.cpp	2005-07-19 23:45:36.000000000 +0200
+++ scorched/src/dialogs/AutoDefenseDialog.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -173,13 +173,13 @@
 		char buffer[256];
 		if (shieldcount > 0)
 		{
-			sprintf(buffer, "%s (%i)",
+			snprintf(buffer, sizeof(buffer), "%s (%i)",
 				shield->getName(),
 				shieldcount);
 		}
 		else
 		{
-			sprintf(buffer, "%s (In)",
+			snprintf(buffer, sizeof(buffer), "%s (In)",
 				shield->getName());
 		}
 		ddshields_->addText(GLWSelectorEntry(buffer,
@@ -215,13 +215,13 @@
 		char buffer[256];
 		if (tank->getAccessories().getShields().getShieldCount(currentShield) > 0)
 		{
-			sprintf(buffer, "%s (%i)",
+			snprintf(buffer, sizeof(buffer), "%s (%i)",
 				currentShield->getName(),
 				tank->getAccessories().getShields().getShieldCount(currentShield));
 		}
 		else
 		{
-			sprintf(buffer, "%s (In)",
+			snprintf(buffer, sizeof(buffer), "%s (In)",
 				currentShield->getName());
 		}
 		ddshields_->setText(buffer);
diff -ur scorched.orig/src/ode/error.cpp scorched/src/ode/error.cpp
--- scorched.orig/src/ode/error.cpp	2004-09-15 00:10:04.000000000 +0200
+++ scorched/src/ode/error.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -129,7 +129,7 @@
   else {
     char s[1000],title[100];
     sprintf (title,"ODE Error %d",num);
-    vsprintf (s,msg,ap);
+    vsnprintf (s,sizeof(s),msg,ap);
     s[sizeof(s)-1] = 0;
     MessageBox(0,s,title,MB_OK | MB_ICONWARNING);
   }
@@ -145,7 +145,7 @@
   else {
     char s[1000],title[100];
     sprintf (title,"ODE INTERNAL ERROR %d",num);
-    vsprintf (s,msg,ap);
+    vsnprintf (s,sizeof(s),msg,ap);
     s[sizeof(s)-1] = 0;
     MessageBox(0,s,title,MB_OK | MB_ICONSTOP);
   }
diff -ur scorched.orig/src/ode/testing.cpp scorched/src/ode/testing.cpp
--- scorched.orig/src/ode/testing.cpp	2003-07-10 18:30:19.000000000 +0200
+++ scorched/src/ode/testing.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -72,7 +72,7 @@
 
     va_list ap;
     va_start (ap,name);
-    vsprintf (mi->name,name,ap);
+    vsnprintf (mi->name, sizeof(mi->name), name, ap);
     if (strlen(mi->name) >= sizeof (mi->name)) dDebug (0,"name too long");
 
     mat.push (mi);
@@ -88,7 +88,7 @@
     dMatInfo mi;
     va_list ap;
     va_start (ap,name);
-    vsprintf (mi.name,name,ap);
+    vsnprintf (mi.name, sizeof(mi.name), name, ap);
     if (strlen(mi.name) >= sizeof (mi.name)) dDebug (0,"name too long");
 
     if (strcmp(mp->name,mi.name) != 0)
diff -ur scorched.orig/src/scorched/DisplayDialog.cpp scorched/src/scorched/DisplayDialog.cpp
--- scorched.orig/src/scorched/DisplayDialog.cpp	2006-02-11 15:02:47.000000000 +0100
+++ scorched/src/scorched/DisplayDialog.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -265,8 +265,8 @@
 			const char *stateName = "";
 			KeyboardKey::translateKeyNameValue(key->getKeys()[position].key, keyName);
 			KeyboardKey::translateKeyStateValue(key->getKeys()[position].state, stateName);
-			if (strcmp(stateName, "NONE") == 0) sprintf(buffer, "%s", keyName);
-			else sprintf(buffer, "<%s> %s", stateName, keyName);
+			if (strcmp(stateName, "NONE") == 0) snprintf(buffer, sizeof(buffer), "%s", keyName);
+			else snprintf(buffer, sizeof(buffer), "<%s> %s", stateName, keyName);
 		}
 		button->SetLabel(wxString(buffer, wxConvUTF8));
 	}
diff -ur scorched.orig/src/scorched/MainDialog.cpp scorched/src/scorched/MainDialog.cpp
--- scorched.orig/src/scorched/MainDialog.cpp	2006-02-11 15:02:47.000000000 +0100
+++ scorched/src/scorched/MainDialog.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -143,11 +143,11 @@
 	va_list ap;
 
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, sizeof(text), fmt, ap);
 	va_end(ap);
 
 	char path[1024];
-	sprintf(path, "%s %s", exeName, text);
+	snprintf(path, sizeof(path), "%s %s", exeName, text);
 
 	ScorchedProcess *process = new ScorchedProcess();
 	long result = ::wxExecute(wxString(path, wxConvUTF8), wxEXEC_ASYNC, process);
diff -ur scorched.orig/src/scorched/NetDialog.cpp scorched/src/scorched/NetDialog.cpp
--- scorched.orig/src/scorched/NetDialog.cpp	2006-02-11 15:02:47.000000000 +0100
+++ scorched/src/scorched/NetDialog.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -127,7 +127,7 @@
 				ServerBrowser::instance()->getServerList().
 					getEntryValue(item, "maxplayers");
 			char text[256];
-			sprintf(text, "%s/%s", clients.c_str(), maxclients.c_str());
+			snprintf(text, sizeof(text), "%s/%s", clients.c_str(), maxclients.c_str());
 
 			return wxString(text, wxConvUTF8);
 		}
@@ -498,7 +498,7 @@
 		wxString username = IDC_EDIT_NAME_CTRL->GetValue();
 
 		char buffer[1024];
-		sprintf(buffer, "-connect \"%s\"", (const char *) value.mb_str(wxConvUTF8));
+		snprintf(buffer, sizeof(buffer), "-connect \"%s\"", (const char *) value.mb_str(wxConvUTF8));
 
 		if (!password.empty())
 		{
diff -ur scorched.orig/src/scorched/ServerDialog.cpp scorched/src/scorched/ServerDialog.cpp
--- scorched.orig/src/scorched/ServerDialog.cpp	2006-02-11 15:02:47.000000000 +0100
+++ scorched/src/scorched/ServerDialog.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -402,7 +402,7 @@
 	{
 		TankAI *ai = (*aiitor);
 		char buffer[256];
-		sprintf(buffer, "Add %s", ai->getName());
+		snprintf(buffer, sizeof(buffer), "Add %s", ai->getName());
 		menuAddPlayer->Append(IDC_MENU_PLAYERADD_1 + aicount, wxString(buffer, wxConvUTF8));
 	}
 
@@ -841,7 +841,8 @@
 void showServerDialog()
 {
 	char serverName[1024];
-	sprintf(serverName, "Scorched 3D Dedicated Server [ %s : %i ] [%s]",
+	snprintf(serverName, sizeof(serverName),
+			"Scorched 3D Dedicated Server [ %s : %i ] [%s]",
 			ScorchedServer::instance()->getOptionsGame().getServerName(), 
 			ScorchedServer::instance()->getOptionsGame().getPortNo(), 
 			(ScorchedServer::instance()->getOptionsGame().getPublishServer()?"Published":"Not Published"));
diff -ur scorched.orig/src/scorched/SettingsDialog.cpp scorched/src/scorched/SettingsDialog.cpp
--- scorched.orig/src/scorched/SettingsDialog.cpp	2006-02-11 15:02:47.000000000 +0100
+++ scorched/src/scorched/SettingsDialog.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -417,7 +417,7 @@
 			(void *) (OptionsGame::WindRandom));
 		for (int i=0; i<=5; i++)
 		{
-			char buffer[25];
+			char buffer[30];
 			sprintf(buffer, "Force %i%s", i, ((i==0)?" (No Wind)":""));
 			SettingsEnv::IDC_COMBO_FORCE_CTRL->Append(
 				wxString(buffer, wxConvUTF8), (void *) (i+1));
@@ -471,7 +471,7 @@
 		for (int i=0; i<=20; i++)
 		{
 			char buffer[25];
-			sprintf(buffer, "%i", i, i);
+			sprintf(buffer, "%i", i);
 			if (i<=10)
 			{
 				SettingsEnv::IDC_COMBO_STARTARMSLEVEL_CTRL->Append(wxString(buffer, wxConvUTF8), (void *) i);
Only in scorched/src/scorched: SingleChoiceDialog.cpp.orig
diff -ur scorched.orig/src/scorched/main.cpp scorched/src/scorched/main.cpp
--- scorched.orig/src/scorched/main.cpp	2006-02-11 15:02:47.000000000 +0100
+++ scorched/src/scorched/main.cpp	2006-02-11 15:06:24.000000000 +0100
@@ -145,7 +145,8 @@
 int main(int argc, char *argv[])
 {
 	// Generate the version
-	sprintf(scorched3dAppName, "Scorched3D - Version %s (%s)", 
+	snprintf(scorched3dAppName, sizeof(scorched3dAppName),
+		"Scorched3D - Version %s (%s)", 
 		ScorchedVersion, ScorchedProtocolVersion);
 
 	srand((unsigned)time(0));
Only in scorched/src/scorched: main.cpp~
diff -ur scorched.orig/src/server/ServerBrowserInfo.cpp scorched/src/server/ServerBrowserInfo.cpp
--- scorched.orig/src/server/ServerBrowserInfo.cpp	2006-02-11 15:02:47.000000000 +0100
+++ scorched/src/server/ServerBrowserInfo.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -138,7 +138,7 @@
 {
 	char *serverName = (char *) ScorchedServer::instance()->getOptionsGame().getServerName();
 	char version[256];
-	sprintf(version, "%s (%s)", ScorchedVersion, ScorchedProtocolVersion);
+	snprintf(version, sizeof(version), "%s (%s)", ScorchedVersion, ScorchedProtocolVersion);
 	unsigned currentState = ScorchedServer::instance()->getGameState().getState();
 	bool started = !ServerTooFewPlayersStimulus::instance()->acceptStateChange(0, 0, 0.0f);
 	char players[25];
@@ -146,7 +146,7 @@
 	char maxplayers[25];
 	sprintf(maxplayers, "%i", ScorchedServer::instance()->getOptionsGame().getNoMaxPlayers());
 	char type[100];
-	sprintf(type, "%s (%s)", 
+	snprintf(type, sizeof(type), "%s (%s)", 
 		ScorchedServer::instance()->getOptionsTransient().getGameType(),
 		((ScorchedServer::instance()->getOptionsGame().getTeams() > 1)?"Teams":"No Teams"));
 	wxString osDesc = ::wxGetOsDescription();
diff -ur scorched.orig/src/server/ServerCommon.cpp scorched/src/server/ServerCommon.cpp
--- scorched.orig/src/server/ServerCommon.cpp	2005-08-14 21:11:42.000000000 +0200
+++ scorched/src/server/ServerCommon.cpp	2006-02-11 15:12:42.000000000 +0100
@@ -63,7 +63,7 @@
 	va_list ap;
 
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, sizeof(text), fmt, ap);
 	va_end(ap);	
 
 	ComsTextMessage message(text, 0, true);
@@ -83,7 +83,7 @@
 	va_list ap;
 
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, sizeof(text), fmt, ap);
 	va_end(ap);	
 
 	ComsTextMessage message(text);
@@ -104,7 +104,7 @@
 	va_list ap;
 
 	va_start(ap, fmt);
-	vsprintf(text, fmt, ap);
+	vsnprintf(text, sizeof(text), fmt, ap);
 	va_end(ap);	
 
 	std::map<unsigned int, Tank *> &tanks = 
@@ -295,7 +295,7 @@
 		// Add the actual log message
 		va_list ap;
 		va_start(ap, fmt);
-		vsprintf(text, fmt, ap);
+		vsnprintf(text, sizeof(text), fmt, ap);
 		va_end(ap);
 
 		Logger::log(text);
Only in scorched/src/server: ServerCommon.cpp~
diff -ur scorched.orig/src/server/ServerRegistration.cpp scorched/src/server/ServerRegistration.cpp
--- scorched.orig/src/server/ServerRegistration.cpp	2005-06-08 19:29:38.000000000 +0200
+++ scorched/src/server/ServerRegistration.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -39,7 +39,7 @@
 	netServer_(new NetServerHTTPProtocolSend)
 {
 	static char buffer[1024];
-	sprintf(buffer, 
+	snprintf(buffer, sizeof(buffer),
 		"GET %s/servers.php?register=%s&port=%i HTTP/1.0\r\n"
 		"User-Agent: Scorched3D\r\n"
 		"Host: %s\r\n"
diff -ur scorched.orig/src/tank/TankPhysics.cpp scorched/src/tank/TankPhysics.cpp
--- scorched.orig/src/tank/TankPhysics.cpp	2005-06-11 18:53:41.000000000 +0200
+++ scorched/src/tank/TankPhysics.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -248,13 +248,13 @@
 
 	if (OptionsDisplay::instance()->getUseHexidecimal())
 	{
-		sprintf(messageBuffer, "0x%x (0x%x)", 
+		snprintf(messageBuffer, sizeof(messageBuffer), "0x%x (0x%x)", 
 				int(360.0f - getRotationGunXY()),
 				int(rotDiff));
 	}
 	else
 	{
-		sprintf(messageBuffer, "%.1f (%+.1f)", 
+		snprintf(messageBuffer, sizeof(messageBuffer), "%.1f (%+.1f)", 
 				360.0f - getRotationGunXY(),
 				rotDiff);
 	}
@@ -269,13 +269,13 @@
 
 	if (OptionsDisplay::instance()->getUseHexidecimal())
 	{
-		sprintf(messageBuffer, "0x%x (0X%x)", 
+		snprintf(messageBuffer, sizeof(messageBuffer), "0x%x (0X%x)", 
 				int(getRotationGunYZ()),
 				int(rotDiff));
 	}
 	else
 	{
-		sprintf(messageBuffer, "%.1f (%+.1f)", 
+		snprintf(messageBuffer, sizeof(messageBuffer), "%.1f (%+.1f)", 
 				getRotationGunYZ(),
 				rotDiff);
 	}
@@ -289,13 +289,13 @@
 
 	if (OptionsDisplay::instance()->getUseHexidecimal())
 	{
-		sprintf(messageBuffer, "0X%x (0X%x)", 		
+		snprintf(messageBuffer, sizeof(messageBuffer), "0X%x (0X%x)", 		
 				int(getPower()),
 				int(powDiff));
 	}
 	else
 	{
-		sprintf(messageBuffer, "%.1f (%+.1f)", 		
+		snprintf(messageBuffer, sizeof(messageBuffer), "%.1f (%+.1f)", 		
 				getPower(),
 				powDiff);
 	}
diff -ur scorched.orig/src/tank/TankState.cpp scorched/src/tank/TankState.cpp
--- scorched.orig/src/tank/TankState.cpp	2005-07-17 13:32:05.000000000 +0200
+++ scorched/src/tank/TankState.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -88,7 +88,7 @@
 const char *TankState::getStateString()
 {
 	static char string[1024];
-	sprintf(string, "%s - %s %s(%i hp)",
+	snprintf(string, sizeof(string), "%s - %s %s(%i hp)",
 		((readyState_==sReady)?"Rdy":"Wait"),
 		getSmallStateString(),
 		(muted_?"muted ":""),
diff -ur scorched.orig/src/tank/TankWeapon.cpp scorched/src/tank/TankWeapon.cpp
--- scorched.orig/src/tank/TankWeapon.cpp	2005-07-27 01:51:21.000000000 +0200
+++ scorched/src/tank/TankWeapon.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -206,7 +206,7 @@
 {
 	static char buffer[256];
 	int count = getWeaponCount(getCurrent());
-	sprintf(buffer, ((count>0)?"%s (%i)":"%s (In)"),
+	snprintf(buffer, sizeof(buffer), ((count>0)?"%s (%i)":"%s (In)"),
 		getCurrent()->getName(), count);
 	return buffer;
 }
diff -ur scorched.orig/src/tankai/TankAIAdder.cpp scorched/src/tankai/TankAIAdder.cpp
--- scorched.orig/src/tankai/TankAIAdder.cpp	2005-04-05 00:35:25.000000000 +0200
+++ scorched/src/tankai/TankAIAdder.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -72,7 +72,7 @@
 		char uniqueId[256];
 		{
 			std::set<int> usedIds;
-			sprintf(uniqueId, "%s - computer - %%i", aiName);
+			snprintf(uniqueId, sizeof(uniqueId), "%s - computer - %%i", aiName);
 			std::map<unsigned int, Tank *> &playingTanks = 
 				context.getTankContainer().getPlayingTanks();
 			std::map<unsigned int, Tank *>::iterator playingItor;
@@ -94,7 +94,7 @@
 			int uniqueIdCount = 1;
 			while (usedIds.find(uniqueIdCount) != usedIds.end()) uniqueIdCount++;
 
-			sprintf(uniqueId, "%s - computer - %i", aiName, uniqueIdCount);
+			snprintf(uniqueId, sizeof(uniqueId), "%s - computer - %i", aiName, uniqueIdCount);
 		}
 
 		std::string newname = name;
diff -ur scorched.orig/src/tankgraph/GLWTankTip.cpp scorched/src/tankgraph/GLWTankTip.cpp
--- scorched.orig/src/tankgraph/GLWTankTip.cpp	2006-02-11 15:02:47.000000000 +0100
+++ scorched/src/tankgraph/GLWTankTip.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -50,7 +50,7 @@
 	for (int i=0; i<(int) oldShots.size(); i++)
 	{
 		char buffer[128];
-		sprintf(buffer, "%s%i: Pwr:%.1f Ele:%.1f Rot:%.1f",
+		snprintf(buffer, sizeof(buffer), "%s%i: Pwr:%.1f Ele:%.1f Rot:%.1f",
 			(oldShots[i].current?"* ":"  "),
 			i, oldShots[i].power, oldShots[i].ele,
 			(360.0f - oldShots[i].rot));
@@ -211,13 +211,13 @@
 		char buffer[128];
 		if (count >= 0)
 		{
-			sprintf(buffer, "%s (%i)", 
+			snprintf(buffer, sizeof(buffer), "%s (%i)", 
 				current->getName(),
 				count);
 		}
 		else
 		{
-			sprintf(buffer, "%s (In)",
+			snprintf(buffer, sizeof(buffer), "%s (In)",
 				current->getName());
 		}
 		entries.push_back(GLWSelectorEntry(buffer, &current->getToolTip(), 
@@ -432,13 +432,13 @@
 		char buffer[128];
 		if (count > 0)
 		{
-			sprintf(buffer, "%s (%i)", 
+			snprintf(buffer, sizeof(buffer), "%s (%i)", 
 				weapon->getName(),
 				count);
 		}
 		else
 		{
-			sprintf(buffer, "%s (In)", 
+			snprintf(buffer, sizeof(buffer), "%s (In)", 
 				weapon->getName());
 		}
 		entries.push_back(GLWSelectorEntry(buffer, &weapon->getToolTip(), 
diff -ur scorched.orig/src/tankgraph/TankMenus.cpp scorched/src/tankgraph/TankMenus.cpp
--- scorched.orig/src/tankgraph/TankMenus.cpp	2005-07-19 23:45:37.000000000 +0200
+++ scorched/src/tankgraph/TankMenus.cpp	2006-02-11 15:02:03.000000000 +0100
@@ -193,7 +193,7 @@
 		}
 
 		char buffer[1024];
-		sprintf(buffer, "%c %8s - \"%10s\" (%s)", 
+		snprintf(buffer, 1024, "%c %8s - \"%10s\" (%s)", 
 			currentTank == tank?'>':' ',
 			description,
 			tank->getName(), modelId.getModelName());
@@ -394,12 +394,12 @@
 		static char buffer[1024];
 		if (accessoryCount > 0)
 		{
-			sprintf(buffer, "%s (%i)", 
+			snprintf(buffer, sizeof(buffer), "%s (%i)", 
 				accessory->getName(), accessoryCount);
 		}
 		else
 		{
-			sprintf(buffer, "%s (In)", 
+			snprintf(buffer, sizeof(buffer), "%s (In)", 
 				accessory->getName());
 		}
 		menuItems_.push_back(accessory);