Talk:Buffer overflow

Isn't as malloc says char str[20]; equivalent to char *str = malloc(sizeof(char)*20);

and pointers are stored on the heap, not on the stack ? And maybe the exception does not come from an invalid return address, but from the program running in an underpriviledge ring ? ThorstenStaerk



cat < stack_test.c int main(void) { int w;  //char myBuf[20]; } EOF

sed stack_test_with_array.c

[c 1]$ diff <(gcc -S stack_test.c -o -) <(gcc -S stack_test_with_array.c -o -) 1c1 <      .file   "stack_test.c" --- >      .file   "stack_test_with_array.c" 8c8 <      subl    $8, %esp --- >      subl    $56, %esp
 * }
 * 48 more bites have been reserved on the stack with stack_test_with_array.c Questynux 14:28, January 19, 2007 (EST)

Good example - thanks. User:ThorstenStaerk 20:55, January 19, 2007 (CET)