diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-07-31 15:32:45 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-07-31 15:32:45 +0300 |
commit | e0b8e66540d2724379d6278f83bbbf0f6d5e2aac (patch) | |
tree | 3550c21207534e530687b335f773f836a94078bb | |
parent | bb77b1c0affa43b203f2e9a46fbfb31a062b6ec6 (diff) | |
download | minetest-e0b8e66540d2724379d6278f83bbbf0f6d5e2aac.tar.gz minetest-e0b8e66540d2724379d6278f83bbbf0f6d5e2aac.tar.bz2 minetest-e0b8e66540d2724379d6278f83bbbf0f6d5e2aac.zip |
Fixed problem of server always receiving an empty password from the client
-rw-r--r-- | src/client.cpp | 2 | ||||
-rw-r--r-- | src/main.cpp | 2 | ||||
-rw-r--r-- | src/server.cpp | 12 |
3 files changed, 12 insertions, 4 deletions
diff --git a/src/client.cpp b/src/client.cpp index 5f299890a..55f0af6dc 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -424,7 +424,7 @@ void Client::step(float dtime) memset((char*)&data[3], 0, PLAYERNAME_SIZE); snprintf((char*)&data[3], PLAYERNAME_SIZE, "%s", myplayer->getName()); - /*dstream<<"Client: password hash is \""<<m_password<<"\"" + /*dstream<<"Client: sending initial password hash: \""<<m_password<<"\"" <<std::endl;*/ memset((char*)&data[23], 0, PASSWORD_SIZE); diff --git a/src/main.cpp b/src/main.cpp index 3cc748954..77340cab3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1583,6 +1583,8 @@ int main(int argc, char *argv[]) password = translatePassword(playername, menudata.password); + //dstream<<"Main: password hash: '"<<password<<"'"<<std::endl; + address = wide_to_narrow(menudata.address); int newport = stoi(wide_to_narrow(menudata.port)); if(newport != 0) diff --git a/src/server.cpp b/src/server.cpp index ba40ec627..35c186b5d 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -2020,7 +2020,7 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id) // Get password char password[PASSWORD_SIZE]; - if(datasize >= 2+1+PLAYERNAME_SIZE) + if(datasize < 2+1+PLAYERNAME_SIZE+PASSWORD_SIZE) { // old version - assume blank password password[0] = 0; @@ -2044,7 +2044,10 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id) checkpwd = g_settings.get("default_password"); } - if(password != checkpwd && checkpwd != "") + /*dstream<<"Server: Client gave password '"<<password + <<"', the correct one is '"<<checkpwd<<"'"<<std::endl;*/ + + if(password != checkpwd) { derr_server<<DTIME<<"Server: peer_id="<<peer_id <<": supplied invalid password for " @@ -3350,6 +3353,9 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id) newpwd += c; } + dstream<<"Server: Client requests a password change from " + <<"'"<<oldpwd<<"' to '"<<newpwd<<"'"<<std::endl; + std::string playername = player->getName(); if(m_authmanager.exists(playername) == false) @@ -3361,7 +3367,7 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id) } std::string checkpwd = m_authmanager.getPassword(playername); - + if(oldpwd != checkpwd) { dstream<<"Server: invalid old password"<<std::endl; |