#include <string.h>
#include <stdio.h>
#include <stdlib.h>
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)
{
// only float overwritten
foo("my string is too long !!!!! \x10\x10\xc0\x42");
// also calls can_never_run
foo("my string is too long !!!!! \x10\x10\xc0\x42\x90\x90\x90\x90\x55\x84\x04\x08");
return 0;
}
// its address in my setup is \x08048455
void can_never_run()
{
printf("This can never be executed!\n");
exit(0);
}