brk(2) and stack pointer

Russell King - ARM Linux linux@arm.linux.org.uk
Sat Apr 29 10:58:00 GMT 2006


On Fri, Apr 28, 2006 at 03:22:54PM -0600, Shaun Jackman wrote:
> On 4/28/06, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:
> >Why do you need to care about this?  I suspect if you do care about it,
> >you're in for all sorts of games - think about the case where you
> >malloc some memory for a stack, and then use clone() to create a new
> >thread whose stack is in that malloc'd memory.  That would quite
> >probably be below the current brk, so with your code would cause
> >brk() to fail.
> 
> I agree that there's too many gotchas to check for stack-smashing
> reliably. However, I like Jamie Lokier's idea of checking if the stack
> point is contained within the new sbrk block. This is almost certainly
> an unallowed condition.

If the stack pointer is within the new (unallocated) block, chances are
you will see a segfault from the first stack access _before_ it gets
allocated - the brk or _brk function will probably want to store return
addresses there...



More information about the Newlib mailing list