Datenverlust mit Cocoa leicht gemacht

ml, den 21. Dezember 2006
Macnotes - Logo
Macnotes – Logo

Noch bevor der „Month of Apple Bugs“ begonnen hat, präsentiert ein Autor auf MacOSXhints eindrucksvoll, wie man mittels des Cocoa-Sichern-Dialogs komplette Ordner überschreiben kann. Er demonstriert am Beispiel von Text Edit, wie man einen Ordner mit einer einfachen Textdatei überschreiben kann.

Cocoa-Applikationen ist es generell erlaubt, Ordner mit Dateien zu überschreiben. Der Grund dafür sind die Paket-Dateitypen von Mac OS X, die vom Finder als einfache Dateien dargestellt werden, aber eigentlich Ordner sind. Das einfachste Beispiel dafür sind Mac-OS-X-Programme, die auf der Dateiendung „app“ enden. Schlimmerweise ist das Verhalten des Datei-Ersetzen-Dialogs zwischen Carbon- und Cocoa-Programmen nicht konsistent. Bei Cocoa ist „Ersetzen“ die Voreinstellung, im Gegensatz zu Carbon, wo „Abbrechen“ die Voreinstellung ist. Hat man einen nervösen Finger auf der Enter-Taste, hat man blitzschnell einen Ordner überschrieben.

Dateirechte manipulieren

Dieser Effekt lässt sich sogar noch weiter ausnutzen. So ist es möglich mit Text Edit direkt ausführbare Terminal-Scripts zu erstellen. Jeder Ordner bekommt standardmäßig die Unix-Ausführungsrechte gesetzt, damit man ihn öffnen und darin weiter navigieren kann. Wird der Ordner durch eine Datei ersetzt, so erbt diese automatisch die Ausführungsrechte des Ordners und ist damit im Terminal ausführbar.

Zukünftig sollte man also besser zweimal hinschauen, bevor man eine möglicherweise vermeintliche Datei ersetzt. Am einfachsten wäre es, wenn Apple wieder das Verhalten des Sichern-Dialogs des klassischen Mac OS implementiert. Dort ändert sich der Sichern-Button in einen Öffnen-Button sobald man auf einen Ordner navigiert. Im Sinne der Konsistenz bei der Bedienung ist es außerdem mehr als wünschenswert, dass Apple das Verhalten der unterschiedlichen „Welten“ einander angleicht.


Ähnliche Nachrichten