Gut versteckt

25 Jahre alter Bug in BSD entdeckt

Der OpenBSD-Entwickler Marc Balmer hat einen uralten Fehler in BSD entdeckt.

Marc Balmer bekam vor ein paar Tagen eine E-Mail von einem OpenBSD-Anwender. Dort behauptete der Nutzer, dass Samba abstürzen würde, wenn man Dateien von einem MS-DOS-Dateiesystem serviere. Balmers beschuldigte zunächst Samba und kontaktierte einige Entwickler des Projekts. Dennoch entschied er sich ein bisschen tiefer zu graben und wurde tatsächlich fündig. Allerdings saß der Fehler in allen BSD-Systemen, inklusive Mac OS X. Der Bug wurde erstmalig im August 1983 mit 4.2BSD veröffentlicht.

Der Fehler verbarg sich 25 Jahre lang in der dir()-Bibliothek. Der Autor, Marshall Kirk McKusick, der dir()-Bibliothek kommentierte in einem Gespräch mit Balmer, dass dieser wahrscheinlich einen seiner Fehler bereinigt hätte. Er habe daraufhin die schockierende Anzahl von 22 Programmen mit Updates versorgen müssen. Der Bug selbst sei recht trivial zu beheben gewesen. _readdir_unlocked() darf einfach keine Verzeichniseinträge überspringen, deren inode auf Null gesetzt ist, wenn diese von __seekdir() aufgerufen werden. Balmer witzelte: „Sorry, dass wir fast 25 Jahre gebraucht haben diesen Fehler zu beseitigen“. (jdo)