Ich hab mir gestern den Spaß erlaubt, und ein paar ncurses-Applikationen gefuzzt.
Fuzz testing ist eine Testmethode, bei der man ein Programm mit zufälligen Eingaben "beschießt", und schaut, wie das Programm reagiert, insbesondere, ob es abstürzt. Besonders im Security-Bereich ist in letzter Zeit Fuzz testing relativ beliebt geworden, vor allem weil es ziemlich "billig" ist, einen derartigen Test aufzusetzen, und die Chance, Bugs und insbesondere Buffer Overflows zu finden, relativ hoch ist (man erinnere sich nur
an diesen Fall).
Auf jeden Fall hab ich snownews und raggle, meine zwei (featuremäßig unterlegenen) "Konkurrenten" in Sachen RSS-Feedreader für die Textkonsole, mal mit einem simplen "cat /dev/urandom | snownews" bzw. "cat /dev/urandom | raggle" gefuzzt, und beide sind so richtig schön gestürzt, snownews mit einer NULL-Pointer-Dereferenzierung, und raggle mit einem Methodenaufruf auf ein nil-Objekt (raggle ist ja in Ruby geschrieben; auf jeden Fall ist der Fehler konzeptionell ähnlich zu einer NULL-Pointer-Dereferenzierung). Na, was hab ich gelacht.
Zugegeben, wenn man das gleiche mit newsbeuter macht, schmiert der auch schön ab, aber daran bin nicht ich schuld, sondern
ncurses.
Ein paar andere Applikationen hab ich auch so nebenbei getestet, so etwa slrn (der ist ganz cool, ignoriert stdin, und macht sich stattdessen /dev/tty auf), mutt (der interpretiert Daten auf stdin, wenn stdin kein TTY ist, als Input für ein Mail), centericq (der interpretiert den Datenmüll als normale Eingabe, stürzt aber nicht ab) und vim (der warnt, dass stdin kein TTY ist, läuft aber auch durch).