Why is it 8 here,understanding buffer overflow
        Posted  
        
            by Mask
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Mask
        
        
        
        Published on 2010-03-30T08:23:36Z
        Indexed on 
            2010/03/30
            8:33 UTC
        
        
        Read the original article
        Hit count: 1210
        
void function(int a, int b, int c) {
   char buffer1[5];
   char buffer2[10];
   int *ret;
   ret = buffer1 + 12;
   (*ret) += 8;//why is it 8??
}
void main() {
  int x;
  x = 0;
  function(1,2,3);
  x = 1;
  printf("%d\n",x);
}
The above demo is from here:
http://insecure.org/stf/smashstack.html
But it's not working here:
D:\test>gcc -Wall -Wextra hw.cpp && a.exe
hw.cpp: In function `void function(int, int, int)':
hw.cpp:6: warning: unused variable 'buffer2'
hw.cpp: At global scope:
hw.cpp:4: warning: unused parameter 'a'
hw.cpp:4: warning: unused parameter 'b'
hw.cpp:4: warning: unused parameter 'c'
1
And I don't understand why it's 8 though the author thinks:
A little math tells us the distance is 8 bytes.
© Stack Overflow or respective owner