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