Skip to content

Commit

Permalink
Add player name length checks
Browse files Browse the repository at this point in the history
  • Loading branch information
sapier authored and sapier committed Aug 22, 2014
1 parent 8e9d896 commit d7d8aa1
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
8 changes: 8 additions & 0 deletions src/main.cpp
Expand Up @@ -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
Expand Down Expand Up @@ -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
*/
Expand Down
19 changes: 13 additions & 6 deletions src/server.cpp
Expand Up @@ -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')
{
Expand Down

0 comments on commit d7d8aa1

Please sign in to comment.