Hello, I ran into the same question when I first discovered buffer overflow papers. I asked around at the time and the most I could figure out was that it's some kind of "pillow" of caution. Seems kinda strange to me too that the C compiler gives you ANY leeway like that at all, but it does. I don't know why, but I know that not many people know why either :) Jeff ----- Original Message ----- From: <msodaat_private> To: <vuln-devat_private> Sent: Monday, July 09, 2001 6:27 AM Subject: Stack Allocations > Hey all, > > I have been reading up on buffer overflows and have noticed something odd > with gcc assembly output. Consider the following: > > void func() > { > char buf[15]; > } > > main() > { > func(); > } > > When running 'gcc -S' it shows that 24 bytes are allocated on the stack > for buf[]. I thought it should allocate only 16 bytes. It works fine, it > just makes no sense to me. If I tweak the assembly and change it to 16 > bytes and also change the offsets to %ebp that reference it, it works fine > also. > > Does anyone know why gcc does this? My need to understand everything is > killing me! > > -Marc > > >
This archive was generated by hypermail 2b30 : Tue Jul 10 2001 - 02:38:14 PDT