[linux-l] Microsoft B.G. about bugs

Carsten Posingies neurobasher at gmx.net
Fr Feb 21 15:47:42 CET 2003


Oliver Bandel <oliver at first.in-berlin.de> schrieb:

> Das selbstverschuldete Bufferoverflow-Problem
> fängt schon da an, wo Leute nicht mal sizeof()
> kennen oder nutzen, sondern die Längen hart
> eincodieren. Habe ich tatsächlich in der Arbeitswelt
> (mehrfach) erlebt. Bei Software, die als fertig an die
> Kunden raus gehen sollte. Gerechtfertigt mit: "Was soll
> schon passieren, ist doch oben in der datei der
> gleiche Wert zu finden".
> Spätestens bei der Anpassung beim Kunde vor Ort baut
> man dann möglicherweise was ein, was einem Monate später
> irgendwo zufällig auf die Füsse fällt.

Ich sag dazu nur "Unicode"... strlen("foo") ist eben nicht wirklich 3 Bytes
;-) Aber dass man in C den Platzbedarf für "foo" nicht mit 3, nicht mit
strlen("foo"), sondern mit (strlen("foo")+1)*sizeof(char) ausrechnet, ist
halt nicht Jedermanns Sache...

> Oder wenn man zu faul ist, ein Argument mehr zu übergeben,
> bzw. denkt, "es kann ja nichts schief gehen,
> es kommen hier ja nur die Daten an, die so-und-so aussehen"
> und deswegen strcpy(3) statt strncpy(3) nutz.

Jepp, und wer jetzt mit "C++" ankommt, der soll mal wieder ins Bettchen
gehen und drüber nachdenken, was für einen Stuss er redet. C++ ist nämlich
in letzter Konsequenz auch nur "C". (Und sage mir jetzt niemand, Java sei
per se fehlertolerant und absturzsicher...)

>> Anderes Beispiel - bei einem Freund haben wir ein Shell-Script
>> geschrieben, daß einige Daten aus HTML-Seiten 'rausholt und über die
>> Nomen (besser: alle großgeschriebenen Wörter...) einen (sortierten)
>> Index aufbaut. Wörter wie "Ihrem", "Der", ... sollte weggelassen
>> werden.
>>
>> Irgendwann lief das Script nicht mehr, da ging so ziemlich *alles*
>> Schief. Woran lag's? Er hatte an irgendeiner der LOCALES-Variablen
>> gefummelt und grep, sed & Co. brachten aufmal quasi falsche
>> Ergebnisse an den Tag. Eine Variable umgesetzt - jede 10. Zeile
>> kaputt... (Ein "LANG=C" am Anfang des Scripts hat dann Besserung
>> versprochen...)
>
> Ja, das ist eben das problem mit globalen Variablen,
> die man ja grundätzlich meiden sollte.

Umgebungsvariablen haben aber nunmal die Angewohnheit, global zu sein.
Selbst Perl hat da so seine Problemchen mit, die richtig zu interpretieren.




Mehr Informationen über die Mailingliste linux-l