Bug #427: Account Creation chopping off name beginning
ID | #427 |
---|---|
Submitter | Ryouken |
Product | EOSERV |
Severity | Normal |
Status | OPEN, NEW |
Submitted | 4th Sep 2016 |
Updated | 13th Sep 2016 |
I compiled the latest rev and made a new account on it. When it was created it showed the name with the first letter gone. It only seems to do it on some names and not all. I tried one that started with m and another that started with j, and it cut the beginning letter off of those and even saved them to the database that way. My guess is util::lowercase is causing it, since thats the only thing modifying it between grabbing the packet and saving it's contents to database. I checked to see if the packet was grabbed wrong, but the name showed up fine right after being grabbed, so it's something after that.
Comments
I can tell you right now that this is related to EOSERV's packet sequence protection.
Try disabling that in the config temporarily to see if the problem stops. It should confirm my suspicion.
I believe it's something like the server grabbing a Short from the packet when it should be grabbing a Char.
Yeah, that's something I was suspecting at first too, but looking at the packets sent, the short it grabs is correct. I made the server display the account name after being grabbed and it showed fine. It's being messed with after being grabbed. The only thing I can think of is util::lowercase.
If you actually look at that utility function, there's nothing there that should be cutting off a character. Did you try disabling sequence protection in the config?
I've been messing with the new source for quite a while and have not had this issue compiling the build target as mysql. I am wondering if it is related to sqlite and I'm assuming your useing sqlite?
Yeah, I'm using sqlite, but it cuts off before any database functions are done. And actually I think cirras might be right, It could be getbreakstring.
Are you using fast account creation?
Well I created 7 accounts jomommama,mikemike,dude,insomniac,jude,zztop,alpha all the accounts were created successful after doing that I was thinking the last thing Cirras mentioned could be a potential cause. I also looked over the util and GetBreakString functions those functions seem fine.I can't think of anything else that would cause this problem besides the things already mentioned in this topic..
Oh, I am using fastaccount. I didn't think about that. Sorry @_@
Updated Severity to TRIVIAL
There's a simple solution to this issue.
1.) Declare "double creation_time;" under eoclient.hpp.
2.) Drop a "this->creation_time = 0;" under EOClient::Initialize().
3.) Under the Account_Request handler, insert "this->creation_time = Timer::GetTime() + 120;" directly beneath "reply.AddString("OK");"
4.) Under the Account_Create handler, insert
"bool fast_create = (Timer::GetTime() < this->creation_time);"
5.) Beneath that, insert "if (!fast_create) reader.GetByte();"
______
With minor tweaking, this also makes it very easy to enforce the client's 120 second account creation delay serverside if desired. (You know, without causing improper packet reads and unnecessary typo'd account names in your database...)
All this provided fix will do is identify fast account creations, and make that byte read contingent on it being a normal creation/a short sequence (Above 250something) as opposed to a char (Below 250something).
Couldn't tell you why that is the way it is. Hope this is helpful.
I have reason to believe this is due to fast account creation hacks since I remember having sequence-related issues using one before. I'll look in to more though.
Updated Severity to NORMAL
Add Comment
Please don't post unless you have something relevant to the bug to say.
Do not comment to say "thanks" or "fix this please".
Please log in to add comments. EOSERV Bug Tracker > Bug #427: Account Creation chopping off name beginning