summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--document.asciidoc31
-rw-r--r--presentation.asciidoc8
2 files changed, 27 insertions, 12 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
diff --git a/presentation.asciidoc b/presentation.asciidoc
index b6e6a61..828c524 100644
--- a/presentation.asciidoc
+++ b/presentation.asciidoc
@@ -8,8 +8,12 @@
* Pufferueberlaeufe
* +strcpy(2)+ vs. +strncpy(2)+
- * allgemeine Hinweise zur sicheren Programmierung:
+ * allgemeine sicheren Programmierung: *Carnegie Mellon University*
** http://www.cert.org/secure-coding/
+ *** C
+ *** C++
+ *** Perl
+ *** Java
== Zu viele Rechte
@@ -57,8 +61,6 @@ image::kernel-design.svg[width="100%"]
== Kernel-Design
image::kernel-context-sw.svg[width="100%"]
-== Kernel-Design
-
== Vielen Dank fuer die Aufmerksamkeit
Fragen?