View Single Post
  #14  
Old 02-01-2019, 12:53 PM
Techungry
Fire Beetle
 
Join Date: Jan 2019
Location: Georgia
Posts: 25
Default

The actual characters name is "Pokay" in the database. It's read incorrectly before it ever gets to VerifyMailKey as you can see from:

[02-01-2019 :: 11:06:08] [UCS Server] Received login for user SOE.EQ.!The King's Lair (Solo Tuned EQEmu Server).Poka with key 0BA648B3

By the time we get to Database::VerifyMailKey the query only ends up searching "Poka". That query returns 0 results, and everything crashes and burns after that.

So I think there is at least a check missing somewhere if the query in Database::VerifyMailKey returns nothing to catch the exception case.

I think the problem is some place in clientlist.cpp around here. By the time it hits the log line at teh end 1 character has been striped off the char name.

VARSTRUCT_DECODE_STRING(MailBox, PacketBuffer);

if (strlen(PacketBuffer) != 9) {
Log(Logs:etail, Logs::UCS_Server,
"Mail key is the wrong size. Version of world incompatible with UCS.");
KeyValid = false;
break;
}
ConnectionTypeIndicator = VARSTRUCT_DECODE_TYPE(char, PacketBuffer);

(*it)->SetConnectionType(ConnectionTypeIndicator);

VARSTRUCT_DECODE_STRING(Key, PacketBuffer);

std::string MailBoxString = MailBox, CharacterName;

// Strip off the SOE.EQ.<shortname>.
//
std::string::size_type LastPeriod = MailBoxString.find_last_of(".");

if (LastPeriod == std::string::npos)
CharacterName = MailBoxString;
else
CharacterName = MailBoxString.substr(LastPeriod + 1);

Log(Logs:etail, Logs::UCS_Server, "Received login for user %s with key %s",
MailBox, Key);
Reply With Quote