aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-07-31 15:32:45 +0300
committerPerttu Ahola <celeron55@gmail.com>2011-07-31 15:32:45 +0300
commite0b8e66540d2724379d6278f83bbbf0f6d5e2aac (patch)
tree3550c21207534e530687b335f773f836a94078bb /src
parentbb77b1c0affa43b203f2e9a46fbfb31a062b6ec6 (diff)
downloadminetest-e0b8e66540d2724379d6278f83bbbf0f6d5e2aac.tar.gz
minetest-e0b8e66540d2724379d6278f83bbbf0f6d5e2aac.tar.bz2
minetest-e0b8e66540d2724379d6278f83bbbf0f6d5e2aac.zip
Fixed problem of server always receiving an empty password from the client
Diffstat (limited to 'src')
-rw-r--r--src/client.cpp2
-rw-r--r--src/main.cpp2
-rw-r--r--src/server.cpp12
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;