trying to understand how buffer overruns actually work