Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #105380

Re: Stackoverflow, and how C uses stack to remember function calls

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>

Show all headers | View raw


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


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