Ik had hem hier gedownload
http://download.simplemachines.org/
Ik kon de GitHub link op de website zo 123 niet vinden

Het tweede gedeelte van die snippet kan absoluut verbeterd worden. Voor het eerste gedeelte is token generatie erg lastig, en niet veel anders te doen om een unieke token te genereren.
http://php.net/random_bytes
https://github.com/paragonie/random_compat
Werkt zelfs met PHP 5.2

daarnaast is het algemeen bekend dat microtime alles behalve random is en het gebruik van md5 ook niet bepaald werkt.
Als je weet dat iets niet verstandig is kan je beter een todo/notitie achterlaten zodat iedereen dit vind (en hergebruikt) weet dat het moet worden aangepast.
Ik zie alleen dat het gebruikt word voor random-seeding, en later een token maar waar die token precies voor word gebruikt is mij niet bekend.
Daarnaast, als je dan al onvoorspelbaarheid wilt gebruik dan ook het IP, en sha1 (niet md5).
Overigens is dit niet enigste plek waar de Crypt compleet verkeerd word gebruikt.
https://github.com/Simple...es/LogInOut.php#L370-L371 (een 4 character salt?

)
https://github.com/Simple...es/LogInOut.php#L370-L371 (een random password?)
https://github.com/Simple...es/Subs-Members.php#L1510 (
geld er soms een character limiet of zo?! 
"Err. Whatcha doin' here.", ja precies... )
https://github.com/Simple...Sources/Subs-Auth.php#L45 (legacy support voor cookies? Kom op nou... )
https://github.com/Simple...ources/Subs-Auth.php#L594 (functie gebruik kan ik niet vinden met de zoekfunctie, dus ik ga uit van legacy. zo niet dan is er een groot probleem.)
https://github.com/Simple...Sources/Register.php#L567 (verkeerde controle van wachtwoord hash)
https://github.com/Simple...Sources/Register.php#L626 (token is technisch gelijk aan wachtwoord en moet met constante timing worden vergeleken, en overigens is 10 tekens echt te kort! geen vreselijk groot probleem, je kan hoogstens de registratie activatie omzeilen voor spamming maar toch een probleem).
Ik snap je visie, maar ben het niet echt met je conclusie eens dat het zo rampzalig is.
Een beetje oftopic.
Het probleem met MySQL is dat alles in MyISAM zonder transacties draait of iet, als het fout gaat zegt MySQL bekijk het maar!
Het feit dat dit kan gebeuren met data corruptie tot gevolg is al een unicum, alleen MyISAM heeft deze foutcode, geen enkele andere vendor of engine is zo foutgevoelig als MyISAM. Zelfs optimize kan je behoorlijk wat ellende opleveren,
http://yapf.net/index.php..._raakt_.28alle_versies.29 en dat zelfde geintje heb je bij REPAIR (kans op disk full is vandaag de dag echter erg klein).
Een tussentijdse herstart kan je behoorlijk wat ellende opleveren.
If the server crashes during a REPAIR TABLE operation, it is essential after restarting it that you immediately execute another REPAIR TABLE statement for the table before performing any other operations on it. In the worst case, you might have a new clean index file without information about the data file, and then the next operation you perform could overwrite the data file. This is an unlikely but possible scenario that underscores the value of making a backup first.
En bij grote tabellen word het zelfs nog leuker, wat als iemand denkt "dit duurt te lang, bekijk het maar!" dan heb je geen garantie dat het proces nog doorloopt (zal ongetwijfeld wel , maar is niet gedocumenteerd of iets).
Dit risico nemen zonder dat je weet wat er precies gebeurd is te groot, daarnaast is er geen garantie dat het lukt. En als het al lukt heb je niet de garantie dat alle data nog aanwezig (of dat jet met een lage tabel zit).
Een fout automatisch oplossen is mooi maar soms heb je gewoon iemand nodig die het handmatig oplost.
http://stackoverflow.com/a/6177484l MySQL doesn't really repair anything though, it just recreates the .myi files from scratch. Feel free to accept the answer if it solved your problem :-)
Het risico op race condtions is dat je bij te minste twee bezoekers (die op precies het zelfde moment, wat bij een hoog bezoekers aantal zeker aanwezig is) die actie uitvoeren je niet precies weet wat er gaat gebeuren (ja hij word wel is waar gecached, maar dat is geen garantie als je een bestand gebruikt (fall back)), doe hij het goed of loopt je systeem vast. MySQL waarschuwt er zelf al voor dit niet zomaar uit te voeren, en InnoDB is dan inderdaad een beter idee, maar niet iedereen is helaas zo slim

en dan ben ik liever paranoia op wat je op zo'n moment doet.
"er nooit klachten/problemen mee gemeld", dat is alleen maar mooi maar geen garantie dat het altijd goed gaat
MySQL in MyISAM bij een hoge load (vooral oudere versies) willen nog wel eens crashen en dan loopt je tabel in de soep. En moet je REPAIR uitvoeren.
Enkel een bug report/issue openen is natuurlijk prima als je geen tijd hebt om code voorstellen te maken.
Geen tijd, en als ik iets wil toevoegen wil ik het wel goed doen en er zeker van zijn dat er niet ergens anders iets kapot gaat of dat mijn harde werk niet gebruikt word. Gezien de staat van de code is dat een onbegonnen werk voor mij, er zijn totaal geen unit tests of consistentie in de style, en tal van kleine beveiligingsproblemen die alleen met goede tests kunnen worden opgelost zonder het risico dat dit weer andere problemen introduceert.
Daarnaast zie ik dat een paar ontwikkelaars
https://github.com/elkarte/Elkarte zijn gestart als fork en het daar beter (niet perfect) doen dan bij SMF.