buffer overrun
היי, התחלתי ללמוד על הנושא, וראיתי דוגמא. כתוב שהמחסנית שלי אמורה להשתנות, אבל היא לא... למה? הנה התוכנית שהרצתי:
היי, התחלתי ללמוד על הנושא, וראיתי דוגמא. כתוב שהמחסנית שלי אמורה להשתנות, אבל היא לא... למה? הנה התוכנית שהרצתי:
#include <stdio.h> #include <string.h> void foo(const char* input) { static char buf[10]; printf ("My stack looks like:\n%p\n%p\n%p\n%p\n%p\n%p\n\n"); strcpy(buf, input); printf("%s\n", buf); printf ("Now the stack look like:\n%p\n%p\n%p\n%p\n%p\n%p\n\n"); } void bar () { printf ("Augh! I've been acked!\n"); } int main(int argc, char* argv[]) { printf("Address of foo = %p\n", foo); printf("Address of bar = %p\n", bar); if(argc != 2) { // to keep it from being optimized away bar(); } else { foo(argv[1]); } return 0; }
תודה !