From a68a20ca28aa97b59ae784ba72cd552d84f1c773 Mon Sep 17 00:00:00 2001 From: Jan Klemkow Date: Wed, 9 Jan 2013 13:20:26 +0100 Subject: Finish std-c-lib text and presentation. --- document.asciidoc | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) (limited to 'document.asciidoc') diff --git a/document.asciidoc b/document.asciidoc index a2e30d3..6a36eb0 100644 --- a/document.asciidoc +++ b/document.asciidoc @@ -92,18 +92,31 @@ Standard-C-Bibliothek auf genommen, welche als Argument Maximallaengen [source,c] ------------------- -strcpy(char *dst, const char *src); -strncpy(char *dst, const char *src, size_t len); -strlcpy(char *dst, const char *src, size_t dstsize); +char * strcpy(char *dst, const char *src); +char * strncpy(char *dst, const char *src, size_t len); +char * strlcpy(char *dst, const char *src, size_t dstsize); + +size_t strlen(const char *s); +size_t strnlen(const char *s, size_t maxlen); ------------------- Hierbei gibt es zwei Ansätze mit Längen umzugehen. -TODO: strncpy() strlcpy() - - * gets() - * strlen() - * strcpy() - * str..() +Die Funktionen +strncpy(3)+ sowie +strlcpy(3)+ sind nachtraeglich in die +Standard-C-Bibliothek aufgenommen worden um dem Programmierer fuer diese +Aufgaben Sichere Funktionen zur Verfuegung zu stellen. +Die Funktion wie +gets(3)+ wurde sogar vollkommen entfernt, weil diese Funktion +unter keine Umstaenden sicher zu gebrauchen ist. +Selbst bei scheinbar trivialen Aufgaben wie dem ermitteln der Laenge einer +unbekannten Zeichenkette koennen Speicherbereichsverletzungen auftreten. +Die Funktion +strlen(3)+ durch laeuft eine Zeichenkette solange, bis sie ein +Null-Byte findet. +Wenn die Zeichenkette nicht durch dieses Zeichen abgeschlossen ist, wuerde die +Funktion aus den Speicherbereich der Zeichenkette herrauslaufen und dabei +eventuell auf nicht gemappte Speicherbereiche zugreifen. +Aus diesem Grund wurde die Funktion +strnlen(3)+ eingefuehrt. +Diese Funktion bekommt ebenfalls die Laenge des Speicherbereichs uebergeben. +Dadurch wird unabhaenig vom Inhalt der Zeichenkette die Grenze des +Speicherbereichs eingehalten. == Netzwerk-Programmierung -- cgit