FSK B

>b's weblog

News. Journal. Whatever.

Deutschland wird am Hindukusch verteidigtpyPEG 0.33 released

Dieses wunderschöne Stück Code-Sondermüll aus Firefox

... möchte ich Euch auch nicht vorenthalten:

JSString *jsstr = JS_ValueToString(cx, argv[0]);
NS_ENSURE_TRUE(jsstr, NS_ERROR_OUT_OF_MEMORY);

nsDependentString str(reinterpret_cast<const PRUnichar *>
                                    (::JS_GetStringChars(jsstr)),
                  ::JS_GetStringLength(jsstr));

return WriteCommon(str, aNewlineTerminate);

(nsHTMLDocument.cpp:2221)

Für den ungeübten Firefox-Code-Leser: da wird ein String-Objekt erstellt. Falls dadurch out of memory passiert, wird dem Pointer statt einer Null NS_ERROR_OUT_OF_MEMORY zugewiesen. Danach wird versucht, aus diesem "String" die Zeichen zu extrahieren. Der Ergebnisstring wird mit reinterpret_cast als Pointer auf Zeichen gesehen, und davon wird dann wieder ein String erstellt.

Der wird dann benutzt, um in den Document-Tree zu schreiben. Der String, der aus Gewurschtel aus einem out of memory Integer vielleicht entstanden ist.

Firefox hat keinen Exploit, der Code ist ein einziger Exploit. Oh my noodles!

publiziert Mon, 20 Jul 2009 15:04:35 +0200

Zurück zum Blogindex