summaryrefslogtreecommitdiff
path: root/lib/librthread
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2018-02-10 22:59:03 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2018-02-10 22:59:03 +0000
commitc70e2652a25154153d77119ed56ff13c995ade68 (patch)
tree44277f00d82d2ecdba6fdf5a03d097c951dcf4cb /lib/librthread
parent6c9b27a683236066a5742a8d2dd97a3a4a1f2b80 (diff)
Shift top-of-stack down so that the random==0 case doesn't leave stack
pointer beyond the space. ok stefan, tedu
Diffstat (limited to 'lib/librthread')
-rw-r--r--lib/librthread/rthread_stack.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/librthread/rthread_stack.c b/lib/librthread/rthread_stack.c
index f40ca006c86..73c13e8478d 100644
--- a/lib/librthread/rthread_stack.c
+++ b/lib/librthread/rthread_stack.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rthread_stack.c,v 1.17 2017/09/05 02:40:54 guenther Exp $ */
+/* $OpenBSD: rthread_stack.c,v 1.18 2018/02/10 22:59:02 deraadt Exp $ */
/* PUBLIC DOMAIN: No Rights Reserved. Marco S Hyman <marc@snafu.org> */
@@ -65,7 +65,7 @@ _rthread_alloc_stack(pthread_t thread)
#ifdef MACHINE_STACK_GROWS_UP
stack->sp = base + rnd;
#else
- stack->sp = base + thread->attr.stack_size - rnd;
+ stack->sp = base + thread->attr.stack_size - (_STACKALIGNBYTES+1) - rnd;
#endif
/*
* This impossible guardsize marks this stack as
@@ -103,7 +103,7 @@ _rthread_alloc_stack(pthread_t thread)
stack->sp = base + rnd;
#else
guard = base;
- stack->sp = base + size - rnd;
+ stack->sp = base + size - (_STACKALIGNBYTES+1) - rnd;
#endif
/* memory protect the guard region */