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