summaryrefslogtreecommitdiff
path: root/document.asciidoc
diff options
context:
space:
mode:
authorJan Klemkow <j.klemkow@wemelug.de>2013-01-09 13:20:26 +0100
committerJan Klemkow <j.klemkow@wemelug.de>2013-01-09 13:20:26 +0100
commita68a20ca28aa97b59ae784ba72cd552d84f1c773 (patch)
tree989922837acdd3349c354526dcdaf3c5297448bc /document.asciidoc
parentc6244e672b14c9ecfc89332fcfae0e84242e0ab9 (diff)
downloadsksys-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.asciidoc31
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