mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-09 17:06:24 +00:00
43 lines
615 B
C
43 lines
615 B
C
|
|
#include <stdlib.h>
|
|
#include <sys/types.h>
|
|
#include <unistd.h>
|
|
#include <assert.h>
|
|
|
|
void do_child_badness ( char* p )
|
|
{
|
|
/* Free it a second time */
|
|
free(p);
|
|
}
|
|
|
|
void do_parent_badness ( char* p )
|
|
{
|
|
/* Do a write off the end */
|
|
p[10] = 42;
|
|
}
|
|
|
|
|
|
int main ( void )
|
|
{
|
|
pid_t child;
|
|
char* p = malloc(10); assert(p);
|
|
free(p);
|
|
|
|
/* parent does something bad */
|
|
p[5] = 22;
|
|
|
|
child = fork();
|
|
assert(child != -1); /* assert fork did not fail */
|
|
|
|
if (child == 0) {
|
|
/* I am the child */
|
|
do_child_badness(p);
|
|
} else {
|
|
/* I am the parent */
|
|
do_parent_badness(p);
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|