Problem mit MouseUp im StringGrid
-
Weil du so z.B. in txtBeschreibung einen beliebig langen String eingeben kannst und dieser dann zu einem klassischen Buffer Overflow führen kann. Mit strncpy kann dir das nie passieren. strcpy ist eine der häufigsten Ursachen für Sicherheitslücken. Daher gleich mal abgewöhnen.
Dazu kommt, dass bei nicht kontrollierter Beschreibung eines feststehenden Puffers es z.B. auch zu folgenden Effekten kommen kann:
Mich wundert es nur das es dann an verschiedenen Stellen im Programm Probleme bei der Textausgabe gibt.
... und das sind noch die harmlosen...
-
junix schrieb:
Weil du so z.B. in txtBeschreibung einen beliebig langen String eingeben kannst und dieser dann zu einem klassischen Buffer Overflow führen kann. Mit strncpy kann dir das nie passieren. strcpy ist eine der häufigsten Ursachen für Sicherheitslücken. Daher gleich mal abgewöhnen.
Dazu kommt, dass bei nicht kontrollierter Beschreibung eines feststehenden Puffers es z.B. auch zu folgenden Effekten kommen kann:
Mich wundert es nur das es dann an verschiedenen Stellen im Programm Probleme bei der Textausgabe gibt.
... und das sind noch die harmlosen...
OK, danke mal für den Tip
dann werde ich mal umbauen und schauen obs dann geht
-
Jo ich habs gefunden,
echt tricky und zwar war es tatsächlich ein strcpy, nämlich genau der dessen Textmüll immer angezeigt wurde.
Ts, ts, ts sowas hab ich auch noch nicht gesehen.Vielen Dank noch mal an alle für die Tips
-
Wobei man auch bei strncpy aufpassen muss, da
Zitat Borland Hilfe zu strncpyWenn src mehr als maxlen Zeichen umfaßt, bleibt der nach dest kopierte String ohne abschließendes Nullzeichen.
-
Würde heißen, man sollte auf jeden Fall ein Zeichen aus dem String kappen falls der zu lang wäre.
-
oder '\0' an das letzte mögliche Zeichen zuweisen (in dest).
-
Der Text kommt aus einem Edit-Feld da stell ich MaxLength halt auf 34 bzw 54 dann sollte das passen
-
Mal 'ne ganz 'unschuldige' Frage: Warum verwendest Du überhaupt char? AnsiString ist doch bedeutend leichter zu handhaben.
-
reine Gewohnheit, hat keine besonderen Grund.
-
Würde ich mir abgewöhnen, siehst ja was dabei rauskommt.
Und die Stringklassen sind wirklich sehr mächtig. Spart einem eine Menge Arbeit (und Probleme [..stichel..])Grüße
-
Ich hab mit dem BCB noch nie was gemacht. Unwissenheit kommt halt auch noch dazu

-
hm, ohne das jetzt zu wissen, gibt's die Stringklassen nicht mittlerweile überall? Ich muss aber gestehen, am Anfang waren mir die Stringklassen überaus suspekt, insbesondere da es kontraproduktiv ist diese über new zu erstellen. Und alles ohne Pointer ist zu langsam... Dachte ich.

Davon mal abgesehen welche BCB-Version verwendest Du. Alle Versionen, außer der Personal, sollten über den CodeGuard verfügen. Der meldet einem Zugriffe über Bereichsgrenzen hinaus. Sehr praktisch, um so hinterhältige Fehler zu finden.
Grüße
-
Tja, ich hab zum testen nur die 5'er Standard hier, ich wills mir erst mal anschauen bevor ich einen Haufen Geld ausgebe.