mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-08 08:26:14 +00:00
49 lines
867 B
C
49 lines
867 B
C
|
|
/* A simple test to demonstrate heap, stack, and global overrun
|
|
detection. */
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
short ga[100];
|
|
|
|
__attribute__((noinline))
|
|
int addup_wrongly ( short* arr )
|
|
{
|
|
int sum = 0, i;
|
|
for (i = 0; i <= 100; i++)
|
|
sum += (int)arr[i];
|
|
return sum;
|
|
}
|
|
|
|
__attribute__((noinline))
|
|
int do_other_stuff ( void )
|
|
{
|
|
short la[100];
|
|
return 123 + addup_wrongly(la);
|
|
}
|
|
|
|
__attribute__((noinline))
|
|
int do_stupid_malloc_stuff ( void )
|
|
{
|
|
int sum = 0;
|
|
unsigned char* duh = malloc(100 * sizeof(char));
|
|
sum += duh[-1];
|
|
free(duh);
|
|
sum += duh[50];
|
|
return sum;
|
|
}
|
|
|
|
int main ( void )
|
|
{
|
|
long s = addup_wrongly(ga);
|
|
s += do_other_stuff();
|
|
s += do_stupid_malloc_stuff();
|
|
if (s == 123456789) {
|
|
fprintf(stdout, "well, i never!\n");
|
|
} else {
|
|
fprintf(stdout, "boringly as expected\n");
|
|
}
|
|
return 0;
|
|
}
|