Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #105380
| From | Alla <vitale.alla@gmail.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Stackoverflow, and how C uses stack to remember function calls |
| Date | 2017-03-04 20:10 +0300 |
| Organization | A noiseless patient Spider |
| Message-ID | <o9esbh$qmk$1@dont-email.me> (permalink) |
| References | <o9e922$k6i$1@dont-email.me> <cb148961-5020-7693-294b-a79501e3a8d6@verizon.net> |
On 3/4/17 19:18, James R. Kuyper wrote: > On 03/04/2017 06:40 AM, Alla wrote: > ... >> (here starts the part I would like your help on) as C language secretly >> uses stack also to remember when the function is called and what is the >> address of the previous function called, a "bad guy" can "jump back" to > > This is detail about how C is typically implemented. There's no > requirement in the standard that it be implemented that way. On the > platforms where it's used for C, it's also used, one way or another, by > most of the other programming languages. > > There's also nothing particularly secret about it - it's pretty widely > known among people who work with assembly language. > > Finally, and most importantly, it's not the "address of the previous > function" that is stored on the stack, it is specifically the address of > the instruction in the calling function that should be executed after > the called function returns. This isn't arbitrary documentation of some > kind - returning from the called function involves having control jump > to the specified address, so it can start executing the instructions > stored at that address. > ... >> How does this "redirection" happen, and what is actually happening >> underneath the hood? As I understand it, when the program is compiled, >> first a memory for >> int main() with its local variables is allocated on the stack; if we >> assume that a stack is a vertically placed rectangle, then the memory >> block for the main function will be at the bottom. Next, as main() >> contains a call to function f(), the memory for f and its local >> variables is allocated "above" the memory for main(). When the program >> is executed, once f() is called and finished its job, the memory on >> stack is "cleared". So how that redirection can happen? > > It's very simple, and you've already mentioned it, but you don't seem to > have understood the implications of what you said above. Buffer > overwrites can allow the place on the stack where the return address is > stored, to be replaced by a different address. When the called function > returns, control jumps to the replacement address rather than the > original one. > Thank you very much for your explanations. I see. Also David has provided a great link, where the whole process is explained with numbers and pictures. It's much more clear now. Offtopic: please, let me know if this reply is posted only in the group, and that I haven't sent a copy by email. Thank you! Respectfully, Alla
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Stackoverflow, and how C uses stack to remember function calls Alla <vitale.alla@gmail.com> - 2017-03-04 14:40 +0300
Re: Stackoverflow, and how C uses stack to remember function calls Malcolm McLean <malcolm.mclean5@btinternet.com> - 2017-03-04 03:53 -0800
Re: Stackoverflow, and how C uses stack to remember function calls Alla <vitale.alla@gmail.com> - 2017-03-04 14:58 +0300
Re: Stackoverflow, and how C uses stack to remember function calls Malcolm McLean <malcolm.mclean5@btinternet.com> - 2017-03-04 04:04 -0800
Re: Stackoverflow, and how C uses stack to remember function calls Alla <vitale.alla@gmail.com> - 2017-03-04 15:12 +0300
Re: Stackoverflow, and how C uses stack to remember function calls mark.bluemel@gmail.com - 2017-03-06 00:41 -0800
Re: Stackoverflow, and how C uses stack to remember function calls David Brown <david.brown@hesbynett.no> - 2017-03-04 13:30 +0100
Re: Stackoverflow, and how C uses stack to remember function calls Alla <vitale.alla@gmail.com> - 2017-03-04 15:34 +0300
Re: Stackoverflow, and how C uses stack to remember function calls David Brown <david.brown@hesbynett.no> - 2017-03-04 15:23 +0100
Re: Stackoverflow, and how C uses stack to remember function calls Alla <vitale.alla@gmail.com> - 2017-03-04 18:22 +0300
Re: Stackoverflow, and how C uses stack to remember function calls Chad <cdalten@gmail.com> - 2017-03-04 07:53 -0800
Re: Stackoverflow, and how C uses stack to remember function calls Alla <vitale.alla@gmail.com> - 2017-03-04 19:29 +0300
Re: Stackoverflow, and how C uses stack to remember function calls "James R. Kuyper" <jameskuyper@verizon.net> - 2017-03-04 11:18 -0500
Re: Stackoverflow, and how C uses stack to remember function calls Alla <vitale.alla@gmail.com> - 2017-03-04 20:10 +0300
Re: Stackoverflow, and how C uses stack to remember function calls "James R. Kuyper" <jameskuyper@verizon.net> - 2017-03-04 13:18 -0500
Re: Stackoverflow, and how C uses stack to remember function calls Alla <vitale.alla@gmail.com> - 2017-03-04 22:43 +0300
Re: Stackoverflow, and how C uses stack to remember function calls supercat@casperkitty.com - 2017-03-04 14:33 -0800
Re: Stackoverflow, and how C uses stack to remember function calls Ian Collins <ian-news@hotmail.com> - 2017-03-05 11:50 +1300
Re: Stackoverflow, and how C uses stack to remember function calls supercat@casperkitty.com - 2017-03-05 11:12 -0800
Re: Stackoverflow, and how C uses stack to remember function calls Ian Collins <ian-news@hotmail.com> - 2017-03-06 17:11 +1300
Re: Stackoverflow, and how C uses stack to remember function calls supercat@casperkitty.com - 2017-03-06 07:23 -0800
Re: Stackoverflow, and how C uses stack to remember function calls David Brown <david.brown@hesbynett.no> - 2017-03-06 17:22 +0100
Re: Stackoverflow, and how C uses stack to remember function calls scott@slp53.sl.home (Scott Lurndal) - 2017-03-06 16:40 +0000
Re: Stackoverflow, and how C uses stack to remember function calls jm.bourguet@gmail.com - 2017-03-06 09:04 -0800
Re: Stackoverflow, and how C uses stack to remember function calls scott@slp53.sl.home (Scott Lurndal) - 2017-03-06 17:18 +0000
Re: Stackoverflow, and how C uses stack to remember function calls Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2017-03-06 11:22 -0700
Re: Stackoverflow, and how C uses stack to remember function calls luser droog <luser.droog@gmail.com> - 2017-03-06 09:58 -0800
Re: Stackoverflow, and how C uses stack to remember function calls luser droog <luser.droog@gmail.com> - 2017-03-06 10:04 -0800
Re: Stackoverflow, and how C uses stack to remember function calls Barry Schwarz <schwarzb@dqel.com> - 2017-03-04 09:33 -0800
Re: Stackoverflow, and how C uses stack to remember function calls Alla <vitale.alla@gmail.com> - 2017-03-04 22:46 +0300
Re: Stackoverflow, and how C uses stack to remember function calls Keith Thompson <kst-u@mib.org> - 2017-03-04 12:25 -0800
csiph-web