/*
 * Corrompe o conteúdo da pilha.
 */

#include<stdio.h>

void *retorno_main;

int g() {
  int i, v[2];

  printf("Função g. Hehehehe!\n");
  v[6] = retorno_main;
  return 0;
}

int f() {
  int i, v[2];

  for (i = 0; i < 10; i++)
    printf("v[%d] = %p\n", i, (void*) v[i]);

  printf("Endereço de retorno = %p\n", (void*) v[6]);

  retorno_main = v[6];
  v[6] = g; /* Corrompe endereço de retorno? */
  return 0; 
} 

int main() {
  printf("Endereço da função main = %p\n", main);
  f();
  printf("Eu voltei...\n");
  return 0;
}