diff --git a/server/authoriz.cpp b/server/authoriz.cpp index 1e53feb02..f59d23839 100755 --- a/server/authoriz.cpp +++ b/server/authoriz.cpp @@ -729,7 +729,7 @@ void TAuthorizationServer::ProcessUserLogin(wxString cmd, wxSocketBase& sock) } else { - if (m_Users.GetCount() >= m_Dongle.MaxUsers()) + if (m_Users.Find(sock, strUser) == NULL && m_Users.GetCount() >= m_Dongle.MaxUsers()) num = 0; else { diff --git a/server/dongle.cpp b/server/dongle.cpp index 5913918a1..1cac3e66b 100755 --- a/server/dongle.cpp +++ b/server/dongle.cpp @@ -299,7 +299,7 @@ unsigned long TEutronFooter::checksum(bool set) unsigned long cs = 0; for (unsigned short i = 0; i < len; i++, ptr++) - cs += *ptr | ~(*ptr << 8); + cs += *ptr | ~(short(*ptr << 8)); if (set) _checksum = cs; return cs; } @@ -407,7 +407,7 @@ bool TDongle::already_programmed() const unsigned long cs = 0; for (byte* ptr = (byte*)_eprom; ptr < (byte*)&eh->_checksum; ptr++) - cs += *ptr | ~(*ptr << 8); + cs += *ptr | ~(short(*ptr << 8)); if (eh->_checksum != cs) return false; // Malicious programming! } @@ -885,7 +885,7 @@ bool TDongle::burn_eutron() unsigned long cs = 0; for (unsigned char* ptr = (unsigned char*)_eprom; ptr < (unsigned char*)&eh->_checksum; ptr++) - cs += *ptr | ~(*ptr << 8); + cs += *ptr | ~(short(*ptr << 8)); eh->_checksum = cs; const unsigned short otb = sizeof(TEutronHeader) / 2;