summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsapier <Sapier at GMX dot net>2014-08-22 14:03:04 +0200
committersapier <Sapier at GMX dot net>2014-08-22 21:18:43 +0200
commitd7d8aa1039e898dd37fcd8fa01d7f13c5452b43d (patch)
treece9b4cb93136d20937d0b47c04b4529a03fb4887
parent8e9d896f2d4bd3c9579170d01e14f1dd5e514362 (diff)
downloadminetest-d7d8aa1039e898dd37fcd8fa01d7f13c5452b43d.tar.gz
minetest-d7d8aa1039e898dd37fcd8fa01d7f13c5452b43d.tar.bz2
minetest-d7d8aa1039e898dd37fcd8fa01d7f13c5452b43d.zip
Add player name length checks
-rw-r--r--src/main.cpp8
-rw-r--r--src/server.cpp19
2 files changed, 21 insertions, 6 deletions
diff --git a/src/main.cpp b/src/main.cpp
index bb2ac5faf..a44a2e611 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -79,6 +79,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "httpfetch.h"
#include "guiEngine.h"
#include "mapsector.h"
+#include "player.h"
#include "database-sqlite3.h"
#ifdef USE_LEVELDB
@@ -1843,6 +1844,13 @@ int main(int argc, char *argv[])
break;
}
+ if (current_playername.length() > PLAYERNAME_SIZE-1) {
+ error_message = wgettext("Player name to long.");
+ playername = current_playername.substr(0,PLAYERNAME_SIZE-1);
+ g_settings->set("name", playername);
+ continue;
+ }
+
/*
Run game
*/
diff --git a/src/server.cpp b/src/server.cpp
index 9bd8e70f3..93d00f369 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -1448,14 +1448,21 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
/*
Set up player
*/
-
- // Get player name
char playername[PLAYERNAME_SIZE];
- for(u32 i=0; i<PLAYERNAME_SIZE-1; i++)
- {
- playername[i] = data[3+i];
+ unsigned int playername_length = 0;
+ for (; playername_length < PLAYERNAME_SIZE; playername_length++ ) {
+ playername[playername_length] = data[3+playername_length];
+ if (data[3+playername_length] == 0)
+ break;
+ }
+
+ if (playername_length == PLAYERNAME_SIZE) {
+ actionstream<<"Server: Player with name exceeding max length "
+ <<"tried to connect from "<<addr_s<<std::endl;
+ DenyAccess(peer_id, L"Name to long");
+ return;
}
- playername[PLAYERNAME_SIZE-1] = 0;
+
if(playername[0]=='\0')
{