progs/C0-long.c
changeset 202 6740798264c1
parent 198 2ce98ee39990
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/progs/C0-long.c	Sat Oct 04 15:31:58 2014 +0100
@@ -0,0 +1,47 @@
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+/*
+  I used as environment the virtual machine provided here
+
+    http://www.cis.upenn.edu/~cis551/box.tar
+
+  This is Debian/Etch with Linux 2.6.18 with gcc 4.1.2 from 2008.
+ 
+  Some installation notes for this virtual machine under VMWare
+  are here
+
+    http://www.cis.upenn.edu/~cis551/project1.pdf
+
+  I run the virtial machine under MacOSX using the program 
+  VirtualBox available for free from 
+
+    https://www.virtualbox.org
+
+  The C-program I compiled the program with 
+
+    gcc -ggdb -fno-stack-protector -mpreferred-stack-boundary=2
+
+ */
+
+
+void foo (char *bar)
+{
+  float my_float = 10.5;    // in hex: \x41\x28\x00\x00
+  char  buffer[28];        
+
+  printf("my float value = %f\n", my_float);
+
+  strcpy(buffer, bar);  
+ 
+  printf("my float value = %f\n", my_float);
+}
+ 
+int main (int argc, char **argv)
+{
+  foo("my string is too long !!!!! ");                  // all is normal
+  foo("my string is too long !!!!! \x10\x10\xc0\x42");  // overwrites my_float
+  return 0;
+}
+