diff options
author | Jan Klemkow <j.klemkow@wemelug.de> | 2013-01-09 13:20:26 +0100 |
---|---|---|
committer | Jan Klemkow <j.klemkow@wemelug.de> | 2013-01-09 13:20:26 +0100 |
commit | a68a20ca28aa97b59ae784ba72cd552d84f1c773 (patch) | |
tree | 989922837acdd3349c354526dcdaf3c5297448bc /document.asciidoc | |
parent | c6244e672b14c9ecfc89332fcfae0e84242e0ab9 (diff) | |
download | sksys-a68a20ca28aa97b59ae784ba72cd552d84f1c773.tar.gz sksys-a68a20ca28aa97b59ae784ba72cd552d84f1c773.tar.bz2 sksys-a68a20ca28aa97b59ae784ba72cd552d84f1c773.zip |
Finish std-c-lib text and presentation.
Diffstat (limited to 'document.asciidoc')
-rw-r--r-- | document.asciidoc | 31 |
1 files changed, 22 insertions, 9 deletions
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 |