#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;+ −
}+ −
+ −