@Shirley: wie lange brauchst du um einen Viewer Code durchzulesen?
Das mit dem Viewer mal genauer ansehen dauert schon bisschen, nachdem ich mir den Code auf die Festplatte geholt hab. Aber eigentlich nicht mehr als einen Abend.
Allerdings lese ich da jetzt auch nicht Zeile für Zeile durch, das wäre bei dem Berg an Zeilen unmöglich. Und die meisten Zeilen und Funktionen sind für mich dabei auch völlig uninteressant, weil es mich dabei nicht interessiert wie nun Prims gerendert werden.
Deswegen vergleiche ich als erstes mal die Unterschiede zu vorherigen Versionen und zum LL Viewer, auf dessen Code der Firestorm zu 99% beruht, (geht in Windows gut z.B. mit Winmerge, ansonsten eben mit Kompare oder ähnlichen diff-Programmen unter Linux) um zu sehen, was sich so getan hat seit dem letzten Review. Und ich schau mir eben dann die wichtigsten Funktionen und Code-Schnipsel an.
Wobei dann das Unix-Tool grep (vor allem in Verbindung mit sed in einer pipe) eine ziemliche Hilfe ist (gibts aber sogar auch für Windows...) Damit kann man dann recht schnell sehen, wo etwa der String "UserLoginInfoCmdLine" überall im Code auftaucht. Oder wo überall die Funktion llSecApi eingesetzt oder llCurl referenziert wird usw. Um den Code besser zu verstehen kann auch Doxygen noch bisschen helfen (
http://lecs.opensource.secondlife.com/doxygen ), da sind u.a. die Strukturen im Viewer selbst dokumentiert. Mit Grep und den passenden Regular Expressions kann man aber auch noch gezielt nach allen Wörtern suchen, die etwa mit "http:" anfangen, oder die auf ".com" enden, die mit einem Punkt + noch zwei oder drei Buchstaben enden usw. So dass man eben nicht Zeile für Zeile selbst durchlesen muss, da lässt man einfach den Rechner über den Code parsen. Damit kann man dann auch die wohl hunderttausende Zeilen Code des Viewers in wenigen Sekunden durchgehen und z.B. die Fundzeilen in eine Textdatei ausgeben lassen, so dass man sich nur noch die kurze Ausgabedatei anschauen muss um die Datei und die Zeile zu finden. Und dann muss man sich nur noch die eine Datei anschauen, aber nicht mehr alle 20000 Dateien des Viewer-Codes.
(Zudem hilft ja nacher auch noch Wireshark dabei den Netzwerk-Verkehr bisschen im Auge zu behalten. Da würde man es direkt sehen, wenn der Viewer Kontakt zu irgendwelchen Servern aufnimmt. Bzw. man kann damit direkt nachvollziehen welchen Daten und Dateien etwa vom Firestorm-Server geladen werden. Und wenn man noch einen System-Monitor bzw. Ressourcen-Monitor am laufen hat, dann kann man sogar ganz direkt sehen auf welche Datei auf dem PC wann vom Viewer wie (lesend oder schreibend) zugegriffen wird.)
Dabei ist mir persönlich jedenfalls noch nichts ungewöhnliches aufgefallen.
Das heißt nicht, dass es keine Hintertüre geben kann - um das 100% auszuschließen müsste man den Ganzen Code schon wirklich bis in die Kleinste Variable analysieren und z.B. nach möglichen Variablen-Überläufen usw. suchen, die sich ausnutzen lassen könnten. Aber das kriegen wohl nicht mal die Lindens hin, der Viewer-Code ist eigentlich ein ziemlich übles Stückwerk aus vielen Codefragmenten von vielen Autoren, die sich nicht immer so ganz abgestimmt haben