programs/C1.c
author Christian Urban <christian dot urban at kcl dot ac dot uk>
Mon, 23 Sep 2013 22:43:28 +0100
changeset 99 77125c0496e6
parent 25 599939aad971
child 112 0711775cb6b0
permissions -rw-r--r--
updated

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

// for installation notes see C0.c

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