[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: DSA-1656



On Tue, Oct 28, 2008 at 08:05:25PM +0100, Gerrit Vollmer wrote:
> Jens Seidel schrieb:
> Mein "Perl" Wissen ist nicht der Hit... ;-)

Bei mir sieht es nicht viel besser aus ...

> >> OK, bei DSA-1615 ist jetzt nochmal "Schranke" drin... Kann mir jemand
> >> erklären, wie man das in dem Zusammenhang verstehen muß? Welche Grenzen
> >> werden überprüft? Inhalte von Variablen?
> > 
> > int feld[4];
> > feld[0] = 12;
> > feld[3] = 7;
> > feld[4] = 5; // oops, der Index passt nicht mehr!
> Ah, danke schön!
> Ich habe nur gaaaaanz leichte Grundkenntnisse, aber bedeutet das, daß
> ein Feld mit 4 Platzhaltern definiert wird und da man bei "0" Anfängt,
> existiert feld[4] (weil's eben das fünfte wäre) nicht mehr? Und dieser

Korrekt.

> Fehler würde eben bei der genannten Sicherheitslücke nicht abgefangen?

Ja. Eventuell ist auch die untere Schranke das Problem (dies wäre ein
Unterlauf):

feld[3-i] = 123;

Hier sollte 0<=i<=3 gelten, da aber das Feld 4 Elemente groß ist, kommt jemand
vielleicht auch mal auf die Idee i==4 zu verwenden. Noch größere Werte wären
noch falscher :-)

Fehler, bei denen man um Eins daneben liegt, sind übrigens ziemlich häufig:
* Du führst an einem Band N Schnitte durch. Wie viele Teilstücke erhälst du?
* Du programmierst die Kanäle 17 bis 158 deines Fernsehers neu. Wie viele
  Sender sind das?
 








 (Und, hast du auch in der ersten Aufgabe an ein geschlossenes Band gedacht
  (sowas wie eine Möbiusschleife)?)

Jens


Reply to: