public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* clone() and Glibc
@ 2023-03-30 23:35 Frederico Silva Correa
  2023-03-31 12:52 ` Adhemerval Zanella Netto
  0 siblings, 1 reply; 2+ messages in thread
From: Frederico Silva Correa @ 2023-03-30 23:35 UTC (permalink / raw)
  To: libc-alpha

Dear developers of the GNU libc:

At the quality of a novice, recently graduated in CS (despite familiarized 
with both C and C++), I found myself puzzled by a little issue.

Glibc provides a wrapper for the clone() system call, which receives 
parameters in the following order:

- a pointer to the function "func" to be run by the child thread;
- a base address for the child stack (we'll be back here), since I'm passing 
CLONE_VM, therefore sharing memory thus unable to reuse the parent thread's 
stack addresses;
- 0x100 or the flag CLONE_VM;
- a pointer to the arguments to be passed to "func" and run with the child 
thread.

Automatic storage local variables are usually placed into the stack, which 
remains more or less a fixed value, decided when the application is run, is 
that correct?
Very well. What, then, would be a stack frame whose "base address" I myself 
malloc'd (at the HEAP) then arbitrarily decided that space --- again, a 
priori in the heap --- to be treated like a stack frame pertaining to the 
child thread.

How am I supposed to interpret all of this? The space allocated at the heap 
need to be freed in the first place? Is this so-called "stack" on the heap? 
Or is it a regular stack frame? What about the potential threatens related to 
e.g. ret2plt and format string attacks?

I'd be very pleased to have these questions clarified, both as a language 
enthusiast and as an user with security worries.

Thanks in advance.

-- 
Frederico Corrêa - 118775

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-03-31 12:52 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-30 23:35 clone() and Glibc Frederico Silva Correa
2023-03-31 12:52 ` Adhemerval Zanella Netto

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).