forked from Mirrorlandia_minetest/minetest
Fix password changing getting stuck if wrong password is entered once
This commit is contained in:
parent
3d2bf8fb02
commit
00f71c3b9d
@ -596,6 +596,15 @@ void RemoteClient::notifyEvent(ClientStateEvent event)
|
||||
}
|
||||
}
|
||||
|
||||
void RemoteClient::resetChosenMech()
|
||||
{
|
||||
if (chosen_mech == AUTH_MECHANISM_SRP) {
|
||||
srp_verifier_delete((SRPVerifier *) auth_data);
|
||||
auth_data = nullptr;
|
||||
}
|
||||
chosen_mech = AUTH_MECHANISM_NONE;
|
||||
}
|
||||
|
||||
u64 RemoteClient::uptime() const
|
||||
{
|
||||
return porting::getTimeS() - m_connection_time;
|
||||
|
@ -243,6 +243,8 @@ public:
|
||||
u32 allowed_auth_mechs = 0;
|
||||
u32 allowed_sudo_mechs = 0;
|
||||
|
||||
void resetChosenMech();
|
||||
|
||||
bool isSudoMechAllowed(AuthMechanism mech)
|
||||
{ return allowed_sudo_mechs & mech; }
|
||||
bool isMechAllowed(AuthMechanism mech)
|
||||
|
@ -1639,6 +1639,7 @@ void Server::handleCommand_SrpBytesA(NetworkPacket* pkt)
|
||||
<< std::endl;
|
||||
if (wantSudo) {
|
||||
DenySudoAccess(peer_id);
|
||||
client->resetChosenMech();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1705,6 +1706,7 @@ void Server::handleCommand_SrpBytesM(NetworkPacket* pkt)
|
||||
<< " tried to change their password, but supplied wrong"
|
||||
<< " (SRP) password for authentication." << std::endl;
|
||||
DenySudoAccess(peer_id);
|
||||
client->resetChosenMech();
|
||||
return;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user